]> Dogcows Code - chaz/tar/blobdiff - src/system.c
(gzip): Remove compression patent warning. According to Brett Smith, the patent is...
[chaz/tar] / src / system.c
index 612951bf98d72556dc7a581389feff13f07a73be..ba1d191e0824473a73b72ac2334804b497b6677e 100644 (file)
@@ -1,10 +1,10 @@
 /* System-dependent calls for tar.
 
 /* System-dependent calls for tar.
 
-   Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
-   Free Software Foundation; either version 2, or (at your option) any later
+   Free Software Foundation; either version 3, or (at your option) any later
    version.
 
    This program is distributed in the hope that it will be useful, but
    version.
 
    This program is distributed in the hope that it will be useful, but
@@ -17,7 +17,6 @@
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #include <system.h>
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #include <system.h>
-#include <getline.h>
 #include <setenv.h>
 
 #include "common.h"
 #include <setenv.h>
 
 #include "common.h"
@@ -697,7 +696,7 @@ stat_to_env (char *name, char type, struct tar_stat_info *st)
     }
 }
 
     }
 }
 
-static pid_t pid;
+static pid_t global_pid;
 static RETSIGTYPE (*pipe_handler) (int sig);
 
 int
 static RETSIGTYPE (*pipe_handler) (int sig);
 
 int
@@ -708,9 +707,9 @@ sys_exec_command (char *file_name, int typechar, struct tar_stat_info *st)
 
   xpipe (p);
   pipe_handler = signal (SIGPIPE, SIG_IGN);
 
   xpipe (p);
   pipe_handler = signal (SIGPIPE, SIG_IGN);
-  pid = xfork ();
+  global_pid = xfork ();
 
 
-  if (pid != 0)
+  if (global_pid != 0)
     {
       xclose (p[PREAD]);
       return p[PWRITE];
     {
       xclose (p[PREAD]);
       return p[PWRITE];
@@ -737,14 +736,14 @@ sys_wait_command (void)
 {
   int status;
 
 {
   int status;
 
-  if (pid < 0)
+  if (global_pid < 0)
     return;
 
   signal (SIGPIPE, pipe_handler);
     return;
 
   signal (SIGPIPE, pipe_handler);
-  while (waitpid (pid, &status, 0) == -1)
+  while (waitpid (global_pid, &status, 0) == -1)
     if (errno != EINTR)
       {
     if (errno != EINTR)
       {
-        pid = -1;
+        global_pid = -1;
         waitpid_error (to_command_option);
         return;
       }
         waitpid_error (to_command_option);
         return;
       }
@@ -753,18 +752,18 @@ sys_wait_command (void)
     {
       if (!ignore_command_error_option && WEXITSTATUS (status))
        ERROR ((0, 0, _("%lu: Child returned status %d"),
     {
       if (!ignore_command_error_option && WEXITSTATUS (status))
        ERROR ((0, 0, _("%lu: Child returned status %d"),
-               (unsigned long) pid, WEXITSTATUS (status)));
+               (unsigned long) global_pid, WEXITSTATUS (status)));
     }
   else if (WIFSIGNALED (status))
     {
       WARN ((0, 0, _("%lu: Child terminated on signal %d"),
     }
   else if (WIFSIGNALED (status))
     {
       WARN ((0, 0, _("%lu: Child terminated on signal %d"),
-            (unsigned long) pid, WTERMSIG (status)));
+            (unsigned long) global_pid, WTERMSIG (status)));
     }
   else
     ERROR ((0, 0, _("%lu: Child terminated on unknown reason"),
     }
   else
     ERROR ((0, 0, _("%lu: Child terminated on unknown reason"),
-           (unsigned long) pid));
+           (unsigned long) global_pid));
 
 
-  pid = -1;
+  global_pid = -1;
 }
 
 int
 }
 
 int
@@ -826,9 +825,9 @@ sys_exec_info_script (const char **archive_name, int volume_number)
   setenv ("TAR_FORMAT",
          archive_format_string (current_format == DEFAULT_FORMAT ?
                                 archive_format : current_format), 1);
   setenv ("TAR_FORMAT",
          archive_format_string (current_format == DEFAULT_FORMAT ?
                                 archive_format : current_format), 1);
+  setenv ("TAR_FD", STRINGIFY_BIGINT (p[PWRITE], uintbuf), 1);
 
   xclose (p[PREAD]);
 
   xclose (p[PREAD]);
-  xdup2 (p[PWRITE], 3);
 
   argv[0] = "/bin/sh";
   argv[1] = "-c";
 
   argv[0] = "/bin/sh";
   argv[1] = "-c";
This page took 0.025516 seconds and 4 git commands to generate.