aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-10-30 14:40:17 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-10-30 14:40:17 +0100
commitf3e2838fc4e6bd0713d7ee5a17e752a19870a0f8 (patch)
tree054bf423fa4cb8b2ddc6dc330efe8780f63e2ce2
parentc8e3922ad838751e45bf4b3cb8608b228ee83c71 (diff)
downloadbusybox-f3e2838fc4e6bd0713d7ee5a17e752a19870a0f8.tar.gz
xargs: fix exit code if command exits nonzero, closes 11381
No code size change on x86. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--findutils/xargs.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/findutils/xargs.c b/findutils/xargs.c
index c369bdaf5..0dedb6356 100644
--- a/findutils/xargs.c
+++ b/findutils/xargs.c
@@ -204,14 +204,15 @@ static int xargs_exec(void)
status = (errno == ENOENT) ? 127 : 126;
}
else if (status >= 0x180) {
- bb_error_msg("'%s' terminated by signal %d",
+ bb_error_msg("'%s' terminated by signal %u",
G.args[0], status - 0x180);
status = 125;
}
else if (status != 0) {
if (status == 255) {
bb_error_msg("%s: exited with status 255; aborting", G.args[0]);
- return 124;
+ status = 124;
+ goto ret;
}
/* "123 if any invocation of the command exited with status 1-125"
* This implies that nonzero exit code is remembered,
@@ -220,7 +221,7 @@ static int xargs_exec(void)
G.xargs_exitcode = 123;
status = 0;
}
-
+ ret:
if (status != 0)
G.xargs_exitcode = status;
return status;