]> Dogcows Code - chaz/tar/commitdiff
(extr_init): Save the device number
authorSergey Poznyakoff <gray@gnu.org.ua>
Tue, 29 Jun 2004 10:11:13 +0000 (10:11 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Tue, 29 Jun 2004 10:11:13 +0000 (10:11 +0000)
of the root device.
(extract_archive): Renamed gnu_restore() to purge_directory().

src/extract.c

index 0ed41532592c683bec9a905e2ad749bf6c080957..65b9a359e45bc3a1974ef20ff3556dcad9ae90a3 100644 (file)
@@ -115,6 +115,19 @@ extr_init (void)
   same_owner_option += we_are_root;
   xalloc_fail_func = extract_finish;
 
+  /* Save 'root device' to avoid purging mount points.
+     FIXME: Should the same be done after handling -C option ? */
+  if (one_file_system_option)
+    {
+      struct stat st;      
+      char *dir = xgetcwd ();
+
+      if (deref_stat (true, dir, &st))
+       stat_diag (dir);
+      else
+       root_device = st.st_dev;
+    }
+  
   /* Option -p clears the kernel umask, so it does not affect proper
      restoration of file permissions.  New intermediate directories will
      comply with umask at start of program.  */
@@ -1012,7 +1025,7 @@ extract_archive (void)
          /* Read the entry and delete files that aren't listed in the
             archive.  */
 
-         gnu_restore (file_name);
+         purge_directory (file_name);
        }
       else if (typeflag == GNUTYPE_DUMPDIR)
        skip_member ();
This page took 0.026437 seconds and 4 git commands to generate.