[Bug 264846] xargs should terminate if line replacement cannot be constructed

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 23 Jun 2022 12:13:59 UTC

            Bug ID: 264846
           Summary: xargs should terminate if line replacement cannot be
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: misc
          Assignee: bugs@FreeBSD.org
          Reporter: thj@FreeBSD.org
             Flags: exp-run?

Created attachment 234885
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=234885&action=edit
cause xargs to error if line cannot be constructed


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
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).

You are receiving this mail because:
You are the assignee for the bug.