| version 1.32, 2003/08/07 16:42:49 |
version 1.33, 2005/01/06 00:07:41 |
| Line 222 getcwd(pt, size) |
|
| Line 222 getcwd(pt, size) |
|
| ino_t root_ino; |
ino_t root_ino; |
| size_t ptsize, upsize; |
size_t ptsize, upsize; |
| int save_errno; |
int save_errno; |
| char *ept, *eup, *up; |
char *ept, *eup, *up, *nup; |
| size_t dlen; |
size_t dlen; |
| |
|
| /* |
/* |
| Line 246 getcwd(pt, size) |
|
| Line 246 getcwd(pt, size) |
|
| *bpt = '\0'; |
*bpt = '\0'; |
| |
|
| /* |
/* |
| * Allocate bytes (1024 - malloc space) for the string of "../"'s. |
* Allocate bytes for the string of "../"'s. |
| * Should always be enough (it's 340 levels). If it's not, allocate |
* Should always be enough (it's 340 levels). If it's not, allocate |
| * as necessary. Special case the first stat, it's ".", not "..". |
* as necessary. Special case the first stat, it's ".", not "..". |
| */ |
*/ |
| if ((up = malloc(upsize = 1024 - 4)) == NULL) |
if ((up = malloc(upsize = MAXPATHLEN)) == NULL) |
| goto err; |
goto err; |
| eup = up + MAXPATHLEN; |
eup = up + upsize; |
| bup = up; |
bup = up; |
| up[0] = '.'; |
up[0] = '.'; |
| up[1] = '\0'; |
up[1] = '\0'; |
| Line 292 getcwd(pt, size) |
|
| Line 292 getcwd(pt, size) |
|
| * as necessary. Max length is 3 for "../", the largest |
* as necessary. Max length is 3 for "../", the largest |
| * possible component name, plus a trailing NULL. |
* possible component name, plus a trailing NULL. |
| */ |
*/ |
| if (bup + 3 + MAXNAMLEN + 1 >= eup) { |
if (bup + 3 + MAXNAMLEN + 1 >= eup) { |
| if ((up = realloc(up, upsize *= 2)) == NULL) |
if ((nup = realloc(up, upsize *= 2)) == NULL) |
| goto err; |
goto err; |
| bup = up; |
bup = nup + (buf - up); |
| |
up = nup; |
| eup = up + upsize; |
eup = up + upsize; |
| } |
} |
| *bup++ = '.'; |
*bup++ = '.'; |