Bug 264846

Summary: xargs should terminate if line replacement cannot be constructed
Product: Base System Reporter: Tom Jones <thj>
Component: miscAssignee: Tom Jones <thj>
Status: New ---    
Severity: Affects Only Me CC: grahamperrin
Priority: --- Flags: antoine: exp-run+
Version: CURRENT   
Hardware: Any   
OS: Any   
See Also: https://reviews.freebsd.org/D35574
Attachments:
Description Flags
cause xargs to error if line cannot be constructed none

Description Tom Jones freebsd_committer freebsd_triage 2022-06-23 12:13:59 UTC
Created attachment 234885 [details]
cause xargs to error if line cannot be constructed

https://reviews.freebsd.org/D35574

If the line with replacement cannot be constructed xargs should terminate as
documented in the man page:

-I replstr                                                               
        Execute utility for each input line, replacing one or more       
        occurrences of replstr in up to replacements (or 5 if no -R flag 
        is specified) arguments to utility with the entire line of input.
        The resulting arguments, after replacement is done, will not be  
        allowed to grow beyond replsize (or 255 if no -S flag is         
        specified) bytes; this is implemented by concatenating as much of
        the argument containing replstr as possible, to the constructed  
        arguments to utility, up to replsize bytes.  The size limit does 
        not apply to arguments to utility which do not contain replstr,  
        and furthermore, no replacement will be done on utility itself.  
        Implies -x.

Currently, xargs continues and lines that cannot accommodate the replacement get
as much of the replstr as will fit in the string. Instead xargs should error,
include an error when we do.

We encounter this error, but gnu/xargs doesn't because they have a much larger
limit for created outputs (~10000 lines).
Comment 1 Antoine Brodin freebsd_committer freebsd_triage 2022-06-27 07:49:33 UTC
Ports exp-run looks fine,  but I am not sure ports are a high xargs user