From 1f5f147a9ec048897c43e2358223430098493497 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 24 Oct 2019 19:41:09 -0500 Subject: Fix the xargs argument too long problem by putting the proper accounting back when they haven't specified -s, add tests. --- tests/xargs.test | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tests') diff --git a/tests/xargs.test b/tests/xargs.test index e2eec036..afed8a17 100644 --- a/tests/xargs.test +++ b/tests/xargs.test @@ -52,6 +52,15 @@ testing "false" "xargs false; echo \$?" "123\n" "" "" testing "exit 255" "xargs sh -c 'exit 255' 2>&1; echo \$?" \ "xargs: sh: exited with status 255; aborting\n124\n" "" "" +# findutils maxes out at 131066 (they do the math wrong), kernel takes 131071. +toyonly testing "max argument size" \ + "head -c 131071 /dev/zero | tr '\0' x | xargs | wc -c" "131072\n" "" "" +X=$(head -c 131066 /dev/zero | tr '\0' x) +# This goes over the kernel's 10 meg limit +testing "big input forces split" \ + 'for i in $(seq 1 100);do echo $X;done|{ xargs >/dev/null && echo yes;}' \ + "yes\n" "" "" + # TODO: what exactly is -x supposed to do? why does coreutils output "one"? #testing "-x" "xargs -x -s 9 || echo expected" "one\nexpected\n" "" "one\ntwo\nthree" -- cgit v1.2.3