]> Dogcows Code - chaz/tar/blobdiff - src/tar.c
Added long01.at
[chaz/tar] / src / tar.c
index 56a8e730656f75b5355741e9b381e653980ceb72..60cd306d7ffdbb132dd17135276d0e6a191d3360 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -343,10 +343,10 @@ static struct argp_option options[] = {
   {"numeric-owner", NUMERIC_OWNER_OPTION, 0, 0,
    N_("always use numbers for user/group names"), 31 },
   {"preserve-permissions", 'p', 0, 0,
-   N_("extract permissions information"), 31 },
+   N_("extract information about file permissions (default for superuser)"), 31 },
   {"same-permissions", 0, 0, OPTION_ALIAS, NULL, 31 },
   {"no-same-permissions", NO_SAME_PERMISSIONS_OPTION, 0, 0,
-   N_("do not extract permissions information"), 31 },
+   N_("apply the user's umask when extracting permissions from the archive (default for ordinary users)"), 31 },
   {"preserve-order", 's', 0, 0,
    N_("sort names to extract to match archive"), 31 },
   {"same-order", 0, 0, OPTION_ALIAS, NULL, 31 },
@@ -617,9 +617,9 @@ parse_opt(int key, char *arg, struct argp_state *state)
   
   switch (key)
     {
-      case 1:
+      case ARGP_KEY_ARG:
        /* File name or non-parsed option, because of ARGP_IN_ORDER */
-       name_add (optarg);
+       name_add (arg);
        args->input_files++;
        break;
 
@@ -1464,6 +1464,18 @@ decode_options (int argc, char **argv)
                          _("--occurrence cannot be used in the requested operation mode")));
     }
 
+  if (seekable_archive && subcommand_option == DELETE_SUBCOMMAND)
+    {
+      /* The current code in delete.c is based on the assumption that
+        skip_member() reads all data from the archive. So, we should
+        make sure it won't use seeks. On the other hand, the same code
+        depends on the ability to backspace a record in the archive,
+        so setting seekable_archive to false is technically incorrect.
+         However, it is tested only in skip_member(), so it's not a
+        problem. */
+      seekable_archive = false;
+    }
+  
   if (archive_names == 0)
     {
       /* If no archive file name given, try TAPE from the environment, or
@@ -1609,6 +1621,7 @@ main (int argc, char **argv)
 {
   set_start_time ();
   program_name = argv[0];
+
   setlocale (LC_ALL, "");
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
This page took 0.021571 seconds and 4 git commands to generate.