← Commit list

8f6c79240

Denis Vlasenko
Denis Vlasenko
2006-12-23
FAILED Duration: 5s

Subject

find: fix spurious -exec error messages (bug reported by Bernhard Fischer )

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

findutils/find.c+1 -2
@@ -197,9 +197,8 @@ ACTF(exec)
for (i = 0; i < ap->exec_argc; i++)
argv[i] = subst(ap->exec_argv[i], ap->subst_count[i], fileName);
argv[i] = NULL; /* terminate the list */
- errno = 0;
rc = wait4pid(spawn(argv));
- if (errno)
+ if (rc)
bb_perror_msg("%s", argv[0]);
for (i = 0; i < ap->exec_argc; i++)
free(argv[i]);
libbb/xfuncs.c+7 -2
@@ -181,6 +181,7 @@ void xfflush_stdout(void)
// -1 for failure. Runs argv[0], searching path if that has no / in it.
pid_t spawn(char **argv)
{
+ /* Why static? */
static int failed;
pid_t pid;
void *app = ENABLE_FEATURE_SH_STANDALONE_SHELL ? find_applet_by_name(argv[0]) : 0;
@@ -196,10 +197,14 @@ pid_t spawn(char **argv)
// and then exit to unblock parent (but don't run atexit() stuff, which
// would screw up parent.)
- failed = -1;
+ failed = errno;
_exit(0);
}
- return failed ? failed : pid;
+ if (failed) {
+ errno = failed;
+ return -1;
+ }
+ return pid;
}
// Die with an error message if we can't spawn a child process.