]> Dogcows Code - chaz/tar/blobdiff - src/tar.c
Update
[chaz/tar] / src / tar.c
index b0e039dbc7ff28d6970103fd4d5dabd9801d09db..6f21cb58f51d703679585e44b70bf828c15467f5 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -228,8 +228,10 @@ enum
   SAME_OWNER_OPTION,
   SHOW_DEFAULTS_OPTION,
   SHOW_OMITTED_DIRS_OPTION,
+  SHOW_STORED_NAMES_OPTION,
   STRIP_COMPONENTS_OPTION,
   SUFFIX_OPTION,
+  TEST_LABEL_OPTION,
   TO_COMMAND_OPTION,
   TOTALS_OPTION,
   UNQUOTE_OPTION,
@@ -295,6 +297,8 @@ static struct argp_option options[] = {
   {"concatenate", 0, 0, OPTION_ALIAS, NULL, 10},
   {"delete", DELETE_OPTION, 0, 0,
    N_("delete from the archive (not on mag tapes!)"), 10 },
+  {"test-label", TEST_LABEL_OPTION, NULL, 0,
+   N_("Test archive volume label and exit"), 10 },
 
   {NULL, 0, NULL, 0,
    N_("Operation modifiers:"), 20},
@@ -310,7 +314,7 @@ static struct argp_option options[] = {
   {"occurrence", OCCURRENCE_OPTION, N_("NUMBER"), OPTION_ARG_OPTIONAL,
    N_("process only the NUMBERth occurrence of each file in the archive. This option is valid only in conjunction with one of the subcommands --delete, --diff, --extract or --list and when a list of files is given either on the command line or via -T option. NUMBER defaults to 1."), 21 },
   {"seek", 'n', NULL, 0,
-   N_("archive is seekable"), 21 },
+   N_("archive is seekable"), 21 },    
 
   {NULL, 0, NULL, 0,
    N_("Overwrite control:"), 30},
@@ -550,7 +554,10 @@ static struct argp_option options[] = {
    N_("Show tar defaults"), 102 },
   {"show-omitted-dirs", SHOW_OMITTED_DIRS_OPTION, 0, 0,
    N_("When listing or extracting, list each directory that does not match search criteria"), 102 },
-
+  {"show-stored-names", SHOW_STORED_NAMES_OPTION, 0, 0,
+   N_("When creating archive in verbose mode, list member names as stored in the archive"),
+   102 },
+    
   {NULL, 0, NULL, 0,
    N_("Compatibility options:"), 110 },
 
@@ -1036,6 +1043,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
       verbose_option++;
       break;
 
+    case TEST_LABEL_OPTION:
+      set_subcommand_option (LIST_SUBCOMMAND);
+      test_label_option = true;
+      break;
+      
     case 'T':
       update_argv (arg, state);
       /* Indicate we've been given -T option. This is for backward
@@ -1308,6 +1320,10 @@ parse_opt (int key, char *arg, struct argp_state *state)
       show_omitted_dirs_option = true;
       break;
 
+    case SHOW_STORED_NAMES_OPTION:
+      show_stored_names_option = true;
+      break;
+      
     case SUFFIX_OPTION:
       backup_option = true;
       args->backup_suffix_string = arg;
@@ -1743,8 +1759,11 @@ decode_options (int argc, char **argv)
     {
       if (multi_volume_option)
        USAGE_ERROR ((0, 0, _("Cannot use multi-volume compressed archives")));
-      if (subcommand_option == UPDATE_SUBCOMMAND)
+      if (subcommand_option == UPDATE_SUBCOMMAND
+         || subcommand_option == APPEND_SUBCOMMAND)
        USAGE_ERROR ((0, 0, _("Cannot update compressed archives")));
+      if (subcommand_option == CAT_SUBCOMMAND)
+       USAGE_ERROR ((0, 0, _("Cannot concatenate compressed archives")));
     }
 
   /* It is no harm to use --pax-option on non-pax archives in archive
@@ -1762,7 +1781,15 @@ decode_options (int argc, char **argv)
   if (recursive_unlink_option)
     old_files_option = UNLINK_FIRST_OLD_FILES;
 
-  if (utc_option)
+
+  if (test_label_option)
+    {
+      /* --test-label is silent if the user has specified the label name to
+        compare against. */
+      if (args.input_files == 0)
+       verbose_option++;
+    }
+  else if (utc_option)
     verbose_option = 2;
 
   /* Forbid using -c with no input files whatsoever.  Check that `-f -',
This page took 0.021753 seconds and 4 git commands to generate.