Patch below:

>From 8ce9c281e07f7d61e2d0c555b9e91bc719b1fbb0 Mon Sep 17 00:00:00 2001
From: Hiltjo Posthuma <hil...@codemadness.org>
Date: Thu, 31 Jul 2025 14:26:56 +0200
Subject: [PATCH 2/4] xargs: fix hang with -s option if argument doesn't fit
 and cannot be resolved

Reproduce:
printf '12345 1234567890 12345' | ./xargs -t -s 5 echo
printf '12345 1234567890 12345' | ./xargs -t -x -n 1 -s 15 echo

There might still be further work needed for example this behaves differently
compared to GNU xargs:

printf '1234567890 12345' | xargs -t -x -s 20 echo
---
 xargs.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/xargs.c b/xargs.c
index d9b2d98..3035bda 100644
--- a/xargs.c
+++ b/xargs.c
@@ -257,11 +257,8 @@ main(int argc, char *argv[])
                while (leftover || (arg = poparg())) {
                        arglen = strlen(arg);
                        if (argsz + arglen >= argmaxsz || i >= NARGS - 1) {
-                               if (arglen >= argmaxsz) {
-                                       weprintf("insufficient argument 
space\n");
-                                       if (xflag)
-                                               exit(1);
-                               }
+                               if (xflag || arglen >= argmaxsz || leftover)
+                                       eprintf("insufficient argument 
space\n");
                                leftover = 1;
                                break;
                        }
-- 
2.50.1

Reply via email to