]> Dogcows Code - chaz/tar/blobdiff - src/tar.c
Do not attempt to close stderr after call to close_stdout.
[chaz/tar] / src / tar.c
index 84b89034640d2e4b4339f02ebe89c58c7d19121f..e0b8ad02bddcd221d080fe71db4707e810b74e6f 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -320,17 +320,16 @@ enum
 
 const char *argp_program_version = "tar (" PACKAGE_NAME ") " VERSION;
 const char *argp_program_bug_address = "<" PACKAGE_BUGREPORT ">";
-static char const doc0[] = N_("\
+static char const doc[] = 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\
-");
-static char const doc1[] = N_("\
-The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
+  tar -xf archive.tar          # Extract all files from archive.tar.\n")
+"\v"
+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\
   t, numbered     make numbered backups\n\
@@ -1862,27 +1861,12 @@ static struct argp argp = {
   options,
   parse_opt,
   N_("[FILE]..."),
-  NULL,
+  doc,
   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)
 {
@@ -1939,8 +1923,6 @@ 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.  */
 
@@ -2345,13 +2327,14 @@ main (int argc, char **argv)
   free (archive_name_array);
   name_term ();
 
-  if (stdlis == stdout)
-    close_stdout ();
-
   if (exit_status == TAREXIT_FAILURE)
     error (0, 0, _("Error exit delayed from previous errors"));
-  if (ferror (stderr) || fclose (stderr) != 0)
+
+  if (stdlis == stdout)
+    close_stdout ();
+  else if (ferror (stderr) || fclose (stderr) != 0) 
     exit_status = TAREXIT_FAILURE;
+
   return exit_status;
 }
 
This page took 0.022265 seconds and 4 git commands to generate.