Loading...
--- Libc/Libc-1725.40.4/gen/nftw.c
+++ Libc/Libc-583/gen/nftw.c
@@ -46,7 +46,7 @@
const char *paths[2];
struct FTW ftw;
FTSENT *cur;
- FTS *ftsp = NULL;
+ FTS *ftsp;
int ftsflags, fnflag, error, postorder, sverrno;
int cwd_fd = -1; /* cwd_fd != -1 means call chdir a lot */
@@ -64,8 +64,7 @@
/* XXX - nfds is currently unused */
if (nfds < 1 || nfds > OPEN_MAX) {
errno = EINVAL;
- error = -1;
- goto done;
+ return (-1);
}
ftsflags = FTS_COMFOLLOW;
@@ -86,8 +85,7 @@
if (ftwflags & FTW_CHDIR) {
cwd_fd = open(".", O_RDONLY, 0);
if (cwd_fd < 0) {
- error = -1;
- goto done;
+ return -1;
}
/* Prevent problems if fts ever starts using chdir when passed
FTS_PHYSICAL */
@@ -104,17 +102,16 @@
ENOTDIR, and EACCES */
{
int rc = stat(path, &path_stat);
+ int e = errno;
if (rc < 0
&& (errno == ELOOP || errno == ENAMETOOLONG || errno == ENOENT
|| errno == ENOTDIR || errno == EACCES)) {
- error = -1;
- goto done;
+ return -1;
}
if (rc >= 0 && nfn) {
if (!S_ISDIR(path_stat.st_mode)) {
errno = ENOTDIR;
- error = -1;
- goto done;
+ return -1;
}
}
}
@@ -123,8 +120,7 @@
paths[1] = NULL;
ftsp = fts_open((char * const *)paths, ftsflags, NULL);
if (ftsp == NULL) {
- error = -1;
- goto done;
+ return (-1);
}
error = 0;
while ((cur = fts_read(ftsp)) != NULL) {
@@ -150,7 +146,6 @@
break;
case FTS_F:
case FTS_DEFAULT:
- SKIP_MOUNT;
fnflag = FTW_F;
break;
case FTS_NS:
@@ -216,14 +211,6 @@
free(free_me);
}
if (rc < 0) {
- if(cur->fts_pathlen == cur->fts_namelen &&
- fnflag == FTW_DNR) {
- /* If cwd_fd is our last FD, fts_read will give us FTS_DNR
- * and fts_path == fts_name == "."
- * This check results in the correct errno being returned.
- */
- errno = EMFILE;
- }
error = -1;
goto done;
}
@@ -247,10 +234,7 @@
}
done:
sverrno = errno;
- if(ftsp != NULL)
- (void) fts_close(ftsp);
- if(cwd_fd >= 0)
- (void) close(cwd_fd);
+ (void) fts_close(ftsp);
errno = sverrno;
return (error);
}