version 1.27, 2004/03/16 00:40:34 |
version 1.28, 2004/10/02 18:13:24 |
|
|
} |
} |
fstat(fd, &sb); |
fstat(fd, &sb); |
|
|
bufsize = sb.st_size; |
bufsize = 0; |
if (bufsize < sb.st_blksize) |
ebuf = buf = NULL; |
bufsize = sb.st_blksize; |
do { |
buf = emalloc(bufsize); |
bufsize += roundup(MAX(sb.st_size, sb.st_blksize), |
|
sizeof(struct dirent)); |
nbytes = getdirentries(fd, buf, bufsize, &base); |
if (buf == NULL) |
if (nbytes <= 0) { |
buf = ebuf = emalloc(bufsize); |
free(buf); |
else { |
warn("%s", path); |
cp = erealloc(buf, bufsize); |
return (NULL); |
ebuf = cp + (ebuf - buf); |
} |
buf = cp; |
ebuf = buf + nbytes; |
} |
|
nbytes = getdirentries(fd, ebuf, bufsize, &base); |
|
if (nbytes == -1) { |
|
free(buf); |
|
warn("%s", path); |
|
return (NULL); |
|
} |
|
ebuf += nbytes; |
|
} while (nbytes == bufsize); |
close(fd); |
close(fd); |
|
|
/* |
/* |