| version 1.14, 1998/08/26 00:38:40 |
version 1.15, 1998/11/06 19:43:23 |
| Line 67 __weak_alias(realpath,_realpath); |
|
| Line 67 __weak_alias(realpath,_realpath); |
|
| (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) |
(dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) |
| |
|
| |
|
| |
#if defined(__SVR4) || defined(__svr4__) |
| |
#define d_fileno d_ino |
| |
#endif |
| |
|
| /* |
/* |
| * char *realpath(const char *path, char resolved_path[MAXPATHLEN]); |
* char *realpath(const char *path, char resolved_path[MAXPATHLEN]); |
| * |
* |
| Line 199 getcwd(pt, size) |
|
| Line 203 getcwd(pt, size) |
|
| size_t ptsize, upsize; |
size_t ptsize, upsize; |
| int save_errno; |
int save_errno; |
| char *ept, *eup, *up; |
char *ept, *eup, *up; |
| |
size_t dlen; |
| |
|
| /* |
/* |
| * If no buffer specified by the user, allocate one as necessary. |
* If no buffer specified by the user, allocate one as necessary. |
| Line 294 getcwd(pt, size) |
|
| Line 299 getcwd(pt, size) |
|
| for (;;) { |
for (;;) { |
| if (!(dp = readdir(dir))) |
if (!(dp = readdir(dir))) |
| goto notfound; |
goto notfound; |
| if (dp->d_fileno == ino) |
if (dp->d_fileno == ino) { |
| |
#if defined(__SVR4) || defined(__svr4__) |
| |
dlen = strlen(dp->d_name); |
| |
#else |
| |
dlen = dp->d_namlen; |
| |
#endif |
| break; |
break; |
| |
} |
| } |
} |
| } else |
} else |
| for (;;) { |
for (;;) { |
| Line 303 getcwd(pt, size) |
|
| Line 314 getcwd(pt, size) |
|
| goto notfound; |
goto notfound; |
| if (ISDOT(dp)) |
if (ISDOT(dp)) |
| continue; |
continue; |
| memmove(bup, dp->d_name, |
#if defined(__SVR4) || defined(__svr4__) |
| (size_t)(dp->d_namlen + 1)); |
dlen = strlen(dp->d_name); |
| |
#else |
| |
dlen = dp->d_namlen; |
| |
#endif |
| |
memmove(bup, dp->d_name, dlen + 1); |
| |
|
| /* Save the first error for later. */ |
/* Save the first error for later. */ |
| if (lstat(up, &s)) { |
if (lstat(up, &s)) { |
| Line 321 getcwd(pt, size) |
|
| Line 336 getcwd(pt, size) |
|
| * Check for length of the current name, preceding slash, |
* Check for length of the current name, preceding slash, |
| * leading slash. |
* leading slash. |
| */ |
*/ |
| if (bpt - pt <= dp->d_namlen + (first ? 1 : 2)) { |
if (bpt - pt <= dlen + (first ? 1 : 2)) { |
| size_t len, off; |
size_t len, off; |
| |
|
| if (!ptsize) { |
if (!ptsize) { |
| Line 339 getcwd(pt, size) |
|
| Line 354 getcwd(pt, size) |
|
| } |
} |
| if (!first) |
if (!first) |
| *--bpt = '/'; |
*--bpt = '/'; |
| bpt -= dp->d_namlen; |
bpt -= dlen; |
| memmove(bpt, dp->d_name, (size_t)dp->d_namlen); |
memmove(bpt, dp->d_name, dlen); |
| (void)closedir(dir); |
(void)closedir(dir); |
| |
|
| /* Truncate any file name. */ |
/* Truncate any file name. */ |