]> Dogcows Code - chaz/tar/blobdiff - src/system.c
Read POSIX multivolume archives split at the header boundary.
[chaz/tar] / src / system.c
index 003f02994e223ea50ab9952e5843781ef0a84451..ea884966ad78b8f2856ac61fb4671e211bc66cd6 100644 (file)
@@ -174,11 +174,11 @@ sys_wait_for_child (pid_t child_pid, bool eof)
        {
          int sig = WTERMSIG (wait_status);
          if (!(!eof && sig == SIGPIPE))
-           ERROR ((0, 0, _("Child died with signal %d"), sig));
+           FATAL_ERROR ((0, 0, _("Child died with signal %d"), sig));
        }
       else if (WEXITSTATUS (wait_status) != 0)
-       ERROR ((0, 0, _("Child returned status %d"),
-               WEXITSTATUS (wait_status)));
+       FATAL_ERROR ((0, 0, _("Child returned status %d"),
+                     WEXITSTATUS (wait_status)));
     }
 }
 
@@ -290,6 +290,7 @@ void
 wait_for_grandchild (pid_t pid)
 {
   int wait_status;
+  int exit_code = 0;
   
   while (waitpid (pid, &wait_status, 0) == -1)
     if (errno != EINTR)
@@ -301,9 +302,9 @@ wait_for_grandchild (pid_t pid)
   if (WIFSIGNALED (wait_status))
     raise (WTERMSIG (wait_status));
   else if (WEXITSTATUS (wait_status) != 0)
-    exit_status = WEXITSTATUS (wait_status);
+    exit_code = WEXITSTATUS (wait_status);
   
-  exit (exit_status);
+  exit (exit_code);
 }
 
 /* Set ARCHIVE for writing, then compressing an archive.  */
@@ -329,8 +330,9 @@ sys_child_open_for_compress (void)
 
   /* The new born child tar is here!  */
 
-  program_name = _("tar (child)");
-
+  set_program_name (_("tar (child)"));
+  signal (SIGPIPE, SIG_DFL);
+  
   xdup2 (parent_pipe[PREAD], STDIN_FILENO);
   xclose (parent_pipe[PWRITE]);
 
@@ -373,7 +375,7 @@ sys_child_open_for_compress (void)
     {
       /* The newborn grandchild tar is here!  Launch the compressor.  */
 
-      program_name = _("tar (grandchild)");
+      set_program_name (_("tar (grandchild)"));
 
       xdup2 (child_pipe[PWRITE], STDOUT_FILENO);
       xclose (child_pipe[PREAD]);
@@ -472,8 +474,9 @@ sys_child_open_for_uncompress (void)
 
   /* The newborn child tar is here!  */
 
-  program_name = _("tar (child)");
-
+  set_program_name (_("tar (child)"));
+  signal (SIGPIPE, SIG_DFL);
+  
   xdup2 (parent_pipe[PWRITE], STDOUT_FILENO);
   xclose (parent_pipe[PREAD]);
 
@@ -507,7 +510,7 @@ sys_child_open_for_uncompress (void)
     {
       /* The newborn grandchild tar is here!  Launch the uncompressor.  */
 
-      program_name = _("tar (grandchild)");
+      set_program_name (_("tar (grandchild)"));
 
       xdup2 (child_pipe[PREAD], STDIN_FILENO);
       xclose (child_pipe[PWRITE]);
This page took 0.02493 seconds and 4 git commands to generate.