On 7/24/19 4:30 PM, Eric Blake wrote: > On 7/24/19 6:28 AM, James Youngman wrote: >> On Tue, Jul 23, 2019 at 7:51 PM 積丹尼 Dan Jacobson <jida...@jidanni.org> wrote: >>> >>> OK. >>> But I now "demand" that xargs add a --show-quoting or whatever argument, >> >> Your demand must be presented in the form of a patch. > > Is a new option necessary, or can we just use gnulib's quotearg() module > unconditionally? I guess the only reason to make it a new command-line > option would be to allow the user to specify which of the quotearg > styles they prefer to see (for reference, 'ls --quoting-style=WORD' is a > good example of producing various representations of the output to avoid > ambiguities). If we do use gnulib's quotearg module, we also benefit > from QUOTING_STYLE in the environment regardless of whether we add a > command-line option.
I agree that another new option is way too much. That question to the user is meant for interactive use only anyway, so what about simply: diff --git a/xargs/xargs.c b/xargs/xargs.c index 913328b8..85084123 100644 --- a/xargs/xargs.c +++ b/xargs/xargs.c @@ -1093,7 +1093,7 @@ print_args (bool ask) for (i = 0; i < bc_state.cmd_argc - 1; i++) { - if (fprintf (stderr, "%s ", bc_state.cmd_argv[i]) < 0) + if (fprintf (stderr, "%s ", quotearg_n_style (0, shell_escape_quoting_style, bc_state.cmd_argv[i])) < 0) die (EXIT_FAILURE, errno, _("Failed to write to stderr")); } Example: $ printf '%s\0' 000 '0 0' '0"0' "0'0" \ | xargs/xargs -0p '-I{}' echo hello '{}' world echo hello 000 world ?...y hello 000 world echo hello '0 0' world ?...y hello 0 0 world echo hello '0"0' world ?...y hello 0"0 world echo hello "0'0" world ?...y hello 0'0 world Well, this also changes plain -t output (i.e., without -p), but it's not that bad actually: it doesn't seem to be specified anywhere how -t output should look like. Just in case, we could still guard quotearg_n_style by "if (ask)". Do you see any drawback / corner case? Have a nice day, Berny