commit 567869a8fe138f23a0a2c6cea903747517a81b0a
Author: sin <[email protected]>
Date:   Sat Jan 4 14:01:22 2014 +0000

    Check the exit status and return it from the parent process

diff --git a/xargs.c b/xargs.c
index b283b5e..612f926 100644
--- a/xargs.c
+++ b/xargs.c
@@ -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));
+       }
 }


Reply via email to