version 1.24.6.3, 2002/12/10 06:25:48 |
version 1.25, 2002/04/16 19:08:43 |
Line 95 realpath(path, resolved) |
|
Line 95 realpath(path, resolved) |
|
|
|
/* Save the starting point. */ |
/* Save the starting point. */ |
if ((fd = open(".", O_RDONLY)) < 0) { |
if ((fd = open(".", O_RDONLY)) < 0) { |
(void)strlcpy(resolved, ".", MAXPATHLEN); |
(void)strcpy(resolved, "."); |
return (NULL); |
return (NULL); |
} |
} |
|
|
Line 107 realpath(path, resolved) |
|
Line 107 realpath(path, resolved) |
|
* if it is a directory, then change to that directory. |
* if it is a directory, then change to that directory. |
* get the current directory name and append the basename. |
* get the current directory name and append the basename. |
*/ |
*/ |
(void)strlcpy(resolved, path, MAXPATHLEN); |
(void)strncpy(resolved, path, MAXPATHLEN - 1); |
|
resolved[MAXPATHLEN - 1] = '\0'; |
loop: |
loop: |
q = strrchr(resolved, '/'); |
q = strrchr(resolved, '/'); |
if (q != NULL) { |
if (q != NULL) { |
|
|
errno = ELOOP; |
errno = ELOOP; |
goto err1; |
goto err1; |
} |
} |
n = readlink(p, resolved, MAXPATHLEN-1); |
n = readlink(p, resolved, MAXPATHLEN); |
if (n < 0) |
if (n < 0) |
goto err1; |
goto err1; |
resolved[n] = '\0'; |
resolved[n] = '\0'; |