From: Paul Eggert Date: Tue, 8 Aug 2006 05:28:32 +0000 (+0000) Subject: * src/tar.c: Work around limitation imposed by gettext 0.15 X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftar;a=commitdiff_plain;h=0680ad4d42e23f09d19b464143f8f2d0127d88cd * 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. --- diff --git a/ChangeLog b/ChangeLog index 7d24603..445dfa1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2006-08-07 Paul Eggert + * 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 diff --git a/src/tar.c b/src/tar.c index fee2a36..84b8903 100644 --- 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. */