Check the exit status and return it from the parent process

This commit is contained in:
sin 2014-01-04 14:01:22 +00:00
parent 7ec616e1e5
commit 567869a8fe
1 changed files with 8 additions and 3 deletions

11
xargs.c
View File

@ -229,10 +229,15 @@ runcmd(void)
eprintf("fork:");
if (pid == 0) {
execvp(*cmd, cmd);
eprintf("execvp %s:", *cmd);
weprintf("execvp %s:", *cmd);
_exit(errno == ENOENT ? 127 : 126);
}
wait(&status);
if (WIFEXITED(status) && WEXITSTATUS(status) == 255)
exit(124);
if (WIFEXITED(status)) {
if (WEXITSTATUS(status) == 255)
exit(124);
if (WEXITSTATUS(status) == 127 ||
WEXITSTATUS(status) == 126)
exit(WEXITSTATUS(status));
}
}