[git commit] xargs: fix exit code if command exits nonzero, closes 11381

Denys Vlasenko vda.linux at googlemail.com
Tue Oct 30 13:40:17 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=f3e2838fc4e6bd0713d7ee5a17e752a19870a0f8
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

No code size change on x86.

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 findutils/xargs.c | 7 ++++---
 1 file 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;


More information about the busybox-cvs mailing list