On 02/08/2013 10:26 PM, Eric Blake wrote:
> On 02/08/2013 02:16 PM, Bernhard Voelker wrote:
>> Clarify -l option: separate from -L to emphasize that MAX-LINES
>> is optional for the -l option.
> 
> Optional arguments to short options cannot be separated by whitespace.

Good catch, thanks (although the first 2 have already been in the
source before).

Here's the fix.

Have a nice day,
Berny
>From e03e26886b70ace6293b114f33edacce30c0eb89 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <[email protected]>
Date: Fri, 8 Feb 2013 22:59:40 +0100
Subject: [PATCH] xargs: split usage text to help translators

Smaller chunks are easier to handle for translators, ideally
one msgid per option.  Separate them.

Fix -e option: optional arguments to short options cannot be
separated by whitespace.  Therefore, write "-e[END]" instead
of the plain wrong "-e [END]".

Similar, as the -i option has an optional argument, it must
be listed as "-i[R]" instead of a bare "-i".

Clarify -l option: separate from -L to emphasize that MAX-LINES
is optional for the -l option; therefore, mention the optional
argument with the option as "-l[MAX-LINES]".

* xargs/xargs.c (usage): Define HTL macro to print one help text
line (or entry).  Split the option descriptions up by using the
above macro.  Refine the messages to adapt to the common way:
change the start of each option's description to lower case,
do not use periods at the end, use semicolons where needed,
indent secondary lines.

Reported by Benno Schulenberg in
http://lists.gnu.org/archive/html/bug-findutils/2013-02/msg00017.html
---
 xargs/xargs.c |   85 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/xargs/xargs.c b/xargs/xargs.c
index 5fd93cd..653c0bd 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -1584,46 +1584,47 @@ parse_num (char *str, int option, long int min, long int max, int fatal)
 static void
 usage (FILE *stream)
 {
-  fprintf (stream, _("\
-Usage: %s [OPTION]... COMMAND INITIAL-ARGS...\n\
-Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.\n"),
-	   program_name);
-  fprintf (stream, _("\n\
-Mandatory arguments to long options are mandatory for short options too.\n\
-Non-mandatory arguments are indicated by [square brackets]\n\
-  -0, --null                   Items are separated by a null, not whitespace.\n\
-                               Disables quote and backslash processing\n\
-  -a, --arg-file=FILE          Read arguments from FILE, not standard input\n\
-  -d, --delimiter=CHARACTER    Input items are separated by CHARACTER, not by\n\
-                               blank space. Disables quote and backslash\n\
-                               processing\n\
-  -E END                       If END occurs as a line of input, the rest of\n\
-                               the input is ignored.\n\
-  -e [END], --eof[=END]        Equivalent to -E END if END is specified.\n\
-                               Otherwise, there is no end-of-file string\n\
-  --help                       Print a summary of the options to xargs.\n\
-  -I R                         same as --replace=R (R must be specified)\n\
-  -i,--replace=[R]             Replace R in initial arguments with names\n\
-                               read from standard input. If R is\n\
-                               unspecified, assume {}\n\
-  -L,-l, --max-lines=MAX-LINES Use at most MAX-LINES nonblank input lines per\n\
-                               command line\n\
-  -l                           Use at most one nonblank input line per\n\
-                               command line\n\
-  -n, --max-args=MAX-ARGS      Use at most MAX-ARGS arguments per command\n\
-                               line\n\
-  -P, --max-procs=MAX-PROCS    Run up to max-procs processes at a time\n\
-  -p, --interactive            Prompt before running commands\n\
-  --process-slot-var=VAR       Set environment variable VAR in child\n\
-                               processes\n\
-  -r, --no-run-if-empty        If there are no arguments, run no command.\n\
-                               If this option is not given, COMMAND will be\n\
-                               run at least once.\n\
-  -s, --max-chars=MAX-CHARS    Limit commands to MAX-CHARS at most\n\
-  --show-limits                Show limits on command-line length.\n\
-  -t, --verbose                Print commands before executing them\n\
-  --version                    Print the version number\n\
-  -x, --exit                   Exit if the size (see -s) is exceeded\n\
-"));
-  fputs (_("\nReport bugs to <[email protected]>.\n"), stream);
+  fprintf (stream,
+           _("Usage: %s [OPTION]... COMMAND INITIAL-ARGS...\n"),
+           program_name);
+
+#define HTL(t) fputs (t, stream);
+
+  HTL (_("Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.\n"
+         "\n"
+         "Mandatory arguments to long options are mandatory for short options too.\n"
+         "Non-mandatory arguments are indicated by [square brackets].\n"));
+  HTL (_("  -0, --null                   items are separated by a null, not whitespace;\n"
+         "                                 disables quote and backslash processing\n"));
+  HTL (_("  -a, --arg-file=FILE          read arguments from FILE, not standard input\n"));
+  HTL (_("  -d, --delimiter=CHARACTER    input items are separated by CHARACTER, not by\n"
+         "                                 blank space; disables quote and backslash\n"
+         "                                 processing\n"));
+  HTL (_("  -E END                       if END occurs as a line of input, the rest of\n"
+         "                                 the input is ignored\n"));
+  HTL (_("  -e[END], --eof[=END]         equivalent to -E END if END is specified;\n"
+         "                                 otherwise, there is no end-of-file string\n"));
+  HTL (_("      --help                   print a summary of the options to xargs\n"));
+  HTL (_("  -I R                         same as --replace=R (R must be specified)\n"));
+  HTL (_("  -i[R], --replace=[R]         replace R in initial arguments with names read\n"
+         "                                 from standard input; if R is unspecified,\n"
+         "                                 assume {}\n"));
+  HTL (_("  -L, --max-lines=MAX-LINES    use at most MAX-LINES nonblank input lines per\n"
+         "                                 command line\n"));
+  HTL (_("  -l[MAX-LINES]                similar to -L but defaults to at most one\n"
+         "                                 nonblank input line if MAX-LINES not specified\n"));
+  HTL (_("  -n, --max-args=MAX-ARGS      use at most MAX-ARGS arguments per command line\n"));
+  HTL (_("  -P, --max-procs=MAX-PROCS    run up to max-procs processes at a time\n"));
+  HTL (_("  -p, --interactive            prompt before running commands\n"));
+  HTL (_("      --process-slot-var=VAR   set environment variable VAR in child processes\n"));
+  HTL (_("  -r, --no-run-if-empty        if there are no arguments, run no command;\n"
+         "                                 if this option is not given, COMMAND will be\n"
+         "                                 run at least once\n"));
+  HTL (_("  -s, --max-chars=MAX-CHARS    limit commands to MAX-CHARS at most\n"));
+  HTL (_("      --show-limits            show limits on command-line length\n"));
+  HTL (_("  -t, --verbose                print commands before executing them\n"));
+  HTL (_("      --version                print the version number\n"));
+  HTL (_("  -x, --exit                   exit if the size (see -s) is exceeded\n"));
+  HTL (_("\n"
+         "Report bugs to <[email protected]>.\n"));
 }
-- 
1.7.7

Reply via email to