A NOTE has been added to this issue. ====================================================================== https://www.austingroupbugs.net/view.php?id=1861 ====================================================================== Reported By: stephane Assigned To: ====================================================================== Project: 1003.1(2024)/Issue8 Issue ID: 1861 Category: Shell and Utilities Type: Error Severity: Objection Priority: normal Status: Interpretation Required Name: Stephane Chazelas Organization: User Reference: Section: xargs utility Page Number: 3601 Line Number: 123207-123214 Interp Status: Proposed Final Accepted Text: https://www.austingroupbugs.net/view.php?id=1861#c6918 ====================================================================== Date Submitted: 2024-10-11 12:32 UTC Last Modified: 2024-10-20 07:24 UTC ====================================================================== Summary: xargs -L broken by https://www.austingroupbugs.net/view.php?id=243 resolution ====================================================================== Relationships ID Summary ---------------------------------------------------------------------- related to 0000243 Add -print0 to "find" ======================================================================
---------------------------------------------------------------------- (0006929) stephane (reporter) - 2024-10-20 07:24 https://www.austingroupbugs.net/view.php?id=1861#c6929 ---------------------------------------------------------------------- Sorry, I had intended that 23 bytes to be big enough for one line but not for two, but that was too simplistic and I should have tested it before posting. What the execve() limit is the limit of varies from system to system (and even version thereof), but even with the POSIX definition where it's on the size in bytes of all args (and args only, not the environment variables) including a NUL delimiter, those 23 bytes were not big enough for even echo + 00001 00002 00003 which is 5+2+6+6+6 = 25. Testing with ast-open's xargs on GNU/Linux, I see its -s size seems to be taking the environment into account and also possibly the size of the argv[] and envp[] arrays of pointers. Without -L: $ print -raC3 {00001..00012} # (zsh) 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 $ print -aC3 {00001..00012} | ast-open/xargs -s5040 echo + + 00001 00002 00003 00004 + 00005 00006 00007 00008 + 00009 00010 00011 00012 (it also seems to run a builtin echo, not the system's echo utility). But its -L seems to work like -n there. Without a -s "$size": $ print -raC3 {00001..00012} | ast-open/xargs -L2 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 $ ast-open/xargs --version version xargs (AT&T Research) 2012-04-11 Given it's the same output as with your Solaris test, it could be that it correctly breaks the list into "echo + 00001 00002" so as to fit into those 23 bytes and ignore line boundaries or that it is broken in a similar way as ast-open's one, so the test is not fully conclusive unforunately. In any case, while Geoff has a point that even with -L, it would be nice to let the user decide whether -x applies or not, the behaviour without is potentially surprising and I can't think of a use case where it would be desirable. So it does also make sense to me for -x to be the default. In any case, it seems to me it would be too late to forbid the GNU/FreeBSD/NetBSD behaviour in the POSIX specification now. Issue History Date Modified Username Field Change ====================================================================== 2024-10-11 12:32 stephane New Issue 2024-10-11 12:32 stephane Name => Stephane Chazelas 2024-10-11 12:32 stephane Section => xargs utility 2024-10-11 12:32 stephane Page Number => 3601 2024-10-11 12:32 stephane Line Number => 123207-123214 2024-10-11 16:28 stephane Note Added: 0006913 2024-10-12 05:57 stephane Note Added: 0006914 2024-10-14 16:13 geoffclare Note Added: 0006916 2024-10-15 05:09 stephane Note Added: 0006917 2024-10-15 05:23 stephane Note Edited: 0006917 2024-10-17 09:08 geoffclare Note Added: 0006918 2024-10-17 09:12 geoffclare Relationship added related to 0000243 2024-10-17 15:12 geoffclare Note Edited: 0006918 2024-10-17 15:12 geoffclare Interp Status => Pending 2024-10-17 15:12 geoffclare Final Accepted Text => https://www.austingroupbugs.net/view.php?id=1861#c6918 2024-10-17 15:12 geoffclare Status New => Interpretation Required 2024-10-17 15:12 geoffclare Resolution Open => Accepted As Marked 2024-10-17 15:13 geoffclare Tag Attached: tc1-2024 2024-10-17 16:25 agadmin Interp Status Pending => Proposed 2024-10-17 16:25 agadmin Note Added: 0006921 2024-10-18 06:34 stephane Note Added: 0006922 2024-10-18 07:02 stephane Note Added: 0006923 2024-10-18 07:08 stephane Note Added: 0006924 2024-10-18 07:10 stephane Note Edited: 0006924 2024-10-18 08:39 geoffclare Note Added: 0006925 2024-10-18 18:59 stephane Note Edited: 0006922 2024-10-19 20:56 stephane Note Added: 0006927 2024-10-19 21:10 gbrandenrobinsonNote Added: 0006928 2024-10-20 07:24 stephane Note Added: 0006929 ======================================================================
