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++ = '.'; |