Lines Matching defs:path

56 char* basePath(const char* path) {
57 char* pos = strchr(path, slash);
65 return (char*)path;
67 int len = (int)(last - path);
70 memcpy(str, path, len);
85 * the length of the prefix almost uniquely identifies the type of the path
94 static int normalizePrefix(const char* path, int len, char* sb, int* sbLen) {
97 while ((src < len) && isSlash(path[src])) src++;
99 && isLetter(c = path[src])
100 && path[src + 1] == ':') {
103 specifiers (e.g., "file://c:/path"). As a side effect,
104 "/c:/path" can be used as an alternative to "c:/path". */
111 && isSlash(path[0])
112 && isSlash(path[1])) {
129 static char* normalizePath(const char* path, int len, int off) {
134 if (len == 0) return (char*)path;
142 src = normalizePrefix(path, len, sb, &sbLen);
146 memcpy(sb+sbLen, path, off);
150 /* Remove redundant slashes from the remainder of the path, forcing all
153 char c = path[src++];
155 while ((src < len) && isSlash(path[src])) src++;
199 char* normalize(char* path) {
200 int n = (int)strlen(path);
205 char c = path[i];
207 return normalizePath(path, n, (prev == slash) ? i - 1 : i);
209 return normalizePath(path, n, i - 1);
211 return normalizePath(path, n, 0);
215 return normalizePath(path, n, n - 1);
216 return path;
278 static int prefixLength(const char* path) {
281 int n = (int)strlen(path);
283 c0 = path[0];
284 c1 = (n > 1) ? path[1] : 0;
290 if ((n > 2) && (path[2] == slash))
298 int isAbsolute(const char* path) {
299 int pl = prefixLength(path);
300 return (((pl == 2) && (path[0] == slash)) || (pl == 3));
304 char* fromURIPath(const char* path) {
306 int len = (int)strlen(path);
308 if ((len > 2) && (path[2] == ':')) {
312 if ((len > 3) && path[len-1] == '/')
314 } else if ((len > 1) && path[len-1] == '/') {
319 if (start == 0 && len == (int)strlen(path)) {
320 return (char*)path;
324 memcpy(p, path+start, len);