commit 59222b919398fdee5fc7bcf186bd32f1999e85b8
Author: sin <[email protected]>
Date: Mon Jan 6 18:51:06 2014 +0000
Exit with error code 123 if one or more invocations of cmd failed
diff --git a/xargs.c b/xargs.c
index 9a0b74c..1eb9bff 100644
--- a/xargs.c
+++ b/xargs.c
@@ -26,6 +26,7 @@ static char **cmd;
static char *argb;
static size_t argbsz = 1;
static size_t argbpos;
+static int nerrors = 0;
static int rflag = 0;
static void
@@ -93,7 +94,8 @@ main(int argc, char *argv[])
free(argb);
free(cmd);
- return 0;
+
+ return nerrors > 0 ? 123 : 0;
}
static int
@@ -245,6 +247,8 @@ runcmd(void)
if (WEXITSTATUS(status) == 127 ||
WEXITSTATUS(status) == 126)
exit(WEXITSTATUS(status));
+ if (status != 0)
+ nerrors++;
}
if (WIFSIGNALED(status))
exit(125);