Project Info Name.......: gnu-hello
Description: GNU Hello


gnu-hello       
Info
Commit...:7eb2ccd4660779f1473f2234f1eb581661cabce3
Author...:Sami Kerola
Committer:Sami Kerola
Date.....:Thu Jan 1 12:43:52 2015 +0000
Parents..:ba4762b7c431a4f724cc3748fa7321b05353e78c

Message
hello: slice print_help() lines and add Translation Project address

* src/hello.c: Slice each option to individually translatable line.
  This is what the translation project members want.  To back the claim
  see util-linux survey results about the topic.  http://goo.gl/BGQ0IV
* src/hello.c: Make usage output to be printed to stdout when --help is
  requested, and stderr when the message is given as hint user should
  do something other.
* src/hello.c: Add Translation Project address to the bug reports line,
  similarly what the coreutils is doing.
* src/hello.c: Exit with none-zero value when option operand error
  happens.

Changes
diff --git a/src/hello.c b/src/hello.c
line changes: +34/-33
index 70c7298..6a864db
--- a/src/hello.c
+++ b/src/hello.c
@@ -33,7 +33,7 @@ static const struct option longopts[] = {
 };
 
 /* Forward declarations.  */
-static void print_help (void);
+static void print_help (FILE *out);
 static void print_version (void);
 
 int
@@ -77,7 +77,7 @@ main (int argc, char *argv[])
 	greeting_msg = optarg;
 	break;
       case 'h':
-	print_help ();
+	print_help (stdout);
 	exit (EXIT_SUCCESS);
 	break;
       case 't':
@@ -92,7 +92,7 @@ main (int argc, char *argv[])
     {
       /* Print error message and exit.  */
       error (0, 0, "%s: %s", _("extra operand"), argv[optind]);
-      print_help ();
+      print_help (stderr);
     }
 
   len = mbsrtowcs(NULL, &greeting_msg, 0, NULL);
@@ -114,52 +114,53 @@ main (int argc, char *argv[])
    blocks and identify the various pieces.  */
 
 static void
-print_help (void)
+print_help (FILE *out)
 {
+  const char *lc_messages = setlocale (LC_MESSAGES, NULL);
   /* TRANSLATORS: --help output 1 (synopsis)
      no-wrap */
-  printf (_("\
-Usage: %s [OPTION]...\n"), program_name);
-
+  fprintf (out, _("Usage: %s [OPTION]...\n"), program_name);
   /* TRANSLATORS: --help output 2 (brief description)
      no-wrap */
-  fputs (_("\
-Print a friendly, customizable greeting.\n"), stdout);
-
-  puts ("");
-  /* TRANSLATORS: --help output 3: options 1/2
+  fputs (_("Print a friendly, customizable greeting.\n"), out);
+  fputs ("\n", out);
+  /* TRANSLATORS: --help output 3: options
      no-wrap */
-  fputs (_("\
-  -h, --help          display this help and exit\n\
-  -v, --version       display version information and exit\n"), stdout);
-
-  puts ("");
-  /* TRANSLATORS: --help output 4: options 2/2
-     no-wrap */
-  fputs (_("\
-  -t, --traditional       use traditional greeting\n\
-  -g, --greeting=TEXT     use TEXT as the greeting message\n"), stdout);
-
-  printf ("\n");
-  /* TRANSLATORS: --help output 5+ (reports)
+  fputs (_("  -t, --traditional       use traditional greeting\n"), out);
+  fputs (_("  -g, --greeting=TEXT     use TEXT as the greeting message\n"), out);
+  fputs ("\n", out);
+  fputs (_("  -h, --help     display this help and exit\n"), out);
+  fputs (_("  -v, --version  output version information and exit\n"), out);
+  fputs ("\n", out);
+  /* TRANSLATORS: --help output 4+ (reports)
      TRANSLATORS: the placeholder indicates the bug-reporting address
-     for this application.  Please add _another line_ with the
-     address for translation bugs.
+     for this application.
      no-wrap */
-  printf (_("\
-Report bugs to: %s\n"), PACKAGE_BUGREPORT);
+  fprintf (out, _("Report bugs to: %s\n"), PACKAGE_BUGREPORT);
+  /* Don't output this redundant message for English locales.
+     Note we still output for 'C' so that it gets included in the man page.  */
+  if (lc_messages && STRNCMP_LIT (lc_messages, "en_"))
+    {
+      /* TRANSLATORS: Replace LANG_CODE in this URL with your language code
+	 <http://translationproject.org/team/LANG_CODE.html> to form one of
+	 the URLs at http://translationproject.org/team/.  Otherwise, replace
+	 the entire URL with your translation team's email address.  */
+      fprintf (out, _("Report %s translation bugs to "
+		"<http://translationproject.org/team/>\n"), PACKAGE_NAME);
+    }
 #ifdef PACKAGE_PACKAGER_BUG_REPORTS
-  printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
+  fprintf (out, _("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
 	  PACKAGE_PACKAGER_BUG_REPORTS);
 #endif
 #ifdef PACKAGE_URL
-  printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
+  fprintf (out, _("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
 #else
-  printf (_("%s home page: <http://www.gnu.org/software/%s/>\n"),
+  fprintf (out, _("%s home page: <http://www.gnu.org/software/%s/>\n"),
 	  PACKAGE_NAME, PACKAGE);
 #endif
   fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>\n"),
-	 stdout);
+	 out);
+  exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS);
 }
 
 

diff --git a/src/system.h b/src/system.h
line changes: +5/-0
index a780110..93e7835
--- a/src/system.h
+++ b/src/system.h
@@ -42,4 +42,9 @@
 /* Check for errors on write.  */
 # include "closeout.h"
 
+/* Just like strncmp, but the second argument must be a literal string
+   and you don't specify the length;  that comes from the literal.  */
+#define STRNCMP_LIT(s, literal) \
+  strncmp (s, "" literal "", sizeof (literal) - 1)
+
 #endif /* HELLO_SYSTEM_H */

This website is licensed under AGPL-3.0. Feel free to copy!