for those w/o this in libc

This commit is contained in:
Todd C. Miller
1994-06-06 00:04:06 +00:00
parent 1460112ba6
commit 2ff87dea0d
2 changed files with 14 additions and 4 deletions

View File

@@ -104,7 +104,8 @@ char * realpath(old, new)
* Resolve the last component of the path if it is a link
* until it is a non-link.
*/
while ((statbuf.st_mode & _S_IFMT) == _S_IFLNK) {
errno = 0;
while (!lstat(new, &statbuf) && (statbuf.st_mode & _S_IFMT) == _S_IFLNK) {
/* it's a link */
if ((len = readlink(new, buf, sizeof(buf))) <= 0)
@@ -130,6 +131,10 @@ char * realpath(old, new)
}
}
/* did an lstat() fail? */
if (errno)
return(realpath_ret(NULL, cwd));
/*
* separate the last component from the rest of the path
* so we can do a getcwd() safely.
@@ -155,7 +160,7 @@ char * realpath(old, new)
/* append "/" and buf to new but watch for double '/' */
len = strlen(new);
if (len) {
temp = new + len;
temp = new + len - 1;
if (*temp != '/') {
*(++temp) = '/';
*(++temp) = '\0';

View File

@@ -104,7 +104,8 @@ char * realpath(old, new)
* Resolve the last component of the path if it is a link
* until it is a non-link.
*/
while ((statbuf.st_mode & _S_IFMT) == _S_IFLNK) {
errno = 0;
while (!lstat(new, &statbuf) && (statbuf.st_mode & _S_IFMT) == _S_IFLNK) {
/* it's a link */
if ((len = readlink(new, buf, sizeof(buf))) <= 0)
@@ -130,6 +131,10 @@ char * realpath(old, new)
}
}
/* did an lstat() fail? */
if (errno)
return(realpath_ret(NULL, cwd));
/*
* separate the last component from the rest of the path
* so we can do a getcwd() safely.
@@ -155,7 +160,7 @@ char * realpath(old, new)
/* append "/" and buf to new but watch for double '/' */
len = strlen(new);
if (len) {
temp = new + len;
temp = new + len - 1;
if (*temp != '/') {
*(++temp) = '/';
*(++temp) = '\0';