]> Dogcows Code - chaz/tar/commitdiff
* src/tar.c: Work around limitation imposed by gettext 0.15
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 8 Aug 2006 05:28:32 +0000 (05:28 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 8 Aug 2006 05:28:32 +0000 (05:28 +0000)
by concatenating strings with "\v" after translation.
(doc): Remove, splitting into:
(doc0, doc1): New constants.
(argp): Don't use doc; just initialize to NULL.
(initialize_argp_doc): New function.
(decode_options): Use it.

ChangeLog
src/tar.c

index 7d24603876146fca6edac904f8b0550978e4b367..445dfa108a74f064a0329c582a8fe82bad62a2b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2006-08-07  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * src/tar.c: Work around limitation imposed by gettext 0.15
+       by concatenating strings with "\v" after translation.
+       (doc): Remove, splitting into:
+       (doc0, doc1): New constants.
+       (argp): Don't use doc; just initialize to NULL.
+       (initialize_argp_doc): New function.
+       (decode_options): Use it.
+
        * bootstrap: Redo po file retrieval to match Bison's method,
        since the translation project changed its index format.
        Don't use --assume-autoconf; it's now replaced
index fee2a365eca97e7121f9a045d549eb7801165820..84b89034640d2e4b4339f02ebe89c58c7d19121f 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -320,13 +320,16 @@ enum
 
 const char *argp_program_version = "tar (" PACKAGE_NAME ") " VERSION;
 const char *argp_program_bug_address = "<" PACKAGE_BUGREPORT ">";
-static char doc[] = N_("GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive.\n\
+static char const doc0[] = N_("\
+GNU `tar' saves many files together into a single tape or disk archive, \
+and can restore individual files from the archive.\n\
 \n\
 Examples:\n\
   tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.\n\
   tar -tvf archive.tar         # List all files in archive.tar verbosely.\n\
   tar -xf archive.tar          # Extract all files from archive.tar.\n\
-\n\
+");
+static char const doc1[] = N_("\
 The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
 The version control may be set with --backup or VERSION_CONTROL, values are:\n\n\
   none, off       never make backups\n\
@@ -1859,12 +1862,27 @@ static struct argp argp = {
   options,
   parse_opt,
   N_("[FILE]..."),
-  doc,
+  NULL,
   NULL,
   NULL,
   NULL
 };
 
+/* Initialize the argp documentation.  gettext 0.15 dislikes doc
+   strings containing '\v', so insert '\v' after translation.  */
+
+static void
+initialize_argp_doc (void)
+{
+  char const *xdoc0 = _(doc0); size_t xlen0 = strlen (xdoc0);
+  char const *xdoc1 = _(doc1); size_t xlen1 = strlen (xdoc1);
+  char *doc = xmalloc (xlen0 + 1 + xlen1 + 1);
+  memcpy (doc, xdoc0, xlen0);
+  doc[xlen0] = '\v';
+  memcpy (doc + xlen0 + 1, doc1, xlen1 + 1);;
+  argp.doc = doc;
+}
+
 void
 usage (int status)
 {
@@ -1921,6 +1939,8 @@ decode_options (int argc, char **argv)
   owner_option = -1;
   group_option = -1;
 
+  initialize_argp_doc ();
+
   /* Convert old-style tar call by exploding option element and rearranging
      options accordingly.  */
 
This page took 0.027427 seconds and 4 git commands to generate.