]> Dogcows Code - chaz/tar/blobdiff - src/extract.c
Improve one-top-level functionality
[chaz/tar] / src / extract.c
index 9b6b7f97487e39d6a297e99c797f9ae37e882cc3..859146cab39596ade8449693f1b7dbd235b36170 100644 (file)
@@ -191,6 +191,19 @@ extr_init (void)
       umask (newdir_umask);    /* restore the kernel umask */
       current_umask = newdir_umask;
     }
+
+  /* If the user wants to guarantee that everything is under one directory,
+     determine its name now and let it be created later.  */
+  if (one_top_level_option && !one_top_level_dir)
+    {
+      char *base = base_name (archive_name_array[0]);
+
+      one_top_level_dir = strip_compression_suffix (base);
+      free (base);
+      
+      if (!one_top_level_dir)
+       USAGE_ERROR ((0, 0, _("Cannot deduce top-level directory name; please set it explicitly with --one-top-level=DIR")));
+    }
 }
 
 /* Use fchmod if possible, fchmodat otherwise.  */
This page took 0.020401 seconds and 4 git commands to generate.