Browse Source

New option --sparse-version

Sergey Poznyakoff 18 years ago
parent
commit
1001c1b326
1 changed files with 24 additions and 4 deletions
  1. 24 4
      src/tar.c

+ 24 - 4
src/tar.c

@@ -301,6 +301,7 @@ enum
   SHOW_DEFAULTS_OPTION,
   SHOW_OMITTED_DIRS_OPTION,
   SHOW_TRANSFORMED_NAMES_OPTION,
+  SPARSE_VERSION_OPTION,
   STRIP_COMPONENTS_OPTION,
   SUFFIX_OPTION,
   TEST_LABEL_OPTION,
@@ -382,6 +383,8 @@ static struct argp_option options[] = {
 
   {"sparse", 'S', 0, 0,
    N_("handle sparse files efficiently"), GRID+1 },
+  {"sparse-version", SPARSE_VERSION_OPTION, N_("MAJOR[.MINOR]"), 0,
+   N_("set version of the sparse format to use"), GRID+1},
   {"incremental", 'G', 0, 0,
    N_("handle old GNU-format incremental backup"), GRID+1 },
   {"listed-incremental", 'g', N_("FILE"), 0,
@@ -400,7 +403,7 @@ static struct argp_option options[] = {
 
 #define GRID 30
   {NULL, 0, NULL, 0,
-   N_("Overwrite control:\n"), GRID+1 },
+   N_("Overwrite control:"), GRID+1 },
 
   {"verify", 'W', 0, 0,
    N_("attempt to verify the archive after writing it"), GRID+1 },
@@ -627,7 +630,7 @@ static struct argp_option options[] = {
    N_("strip NUMBER leading components from file names on extraction"),
    GRID+1 },
   {"transform", TRANSFORM_OPTION, N_("EXPRESSION"), 0,
-   N_("Use sed replace EXPRESSION to transform file names"), GRID+1 },
+   N_("use sed replace EXPRESSION to transform file names"), GRID+1 },
 #undef GRID
 
 #define GRID 95  
@@ -1341,6 +1344,21 @@ parse_opt (int key, char *arg, struct argp_state *state)
       sparse_option = true;
       break;
 
+    case SPARSE_VERSION_OPTION:
+      {
+	char *p;
+	tar_sparse_major = strtoul (arg, &p, 10);
+	if (*p)
+	  {
+	    if (*p != '.')
+	      USAGE_ERROR ((0, 0, _("Invalid sparse version value")));
+	    tar_sparse_minor = strtoul (p + 1, &p, 10);
+	    if (*p)
+	      USAGE_ERROR ((0, 0, _("Invalid sparse version value")));
+	  }
+      }
+      break;
+	    
     case 't':
       set_subcommand_option (LIST_SUBCOMMAND);
       verbose_option++;
@@ -1885,7 +1903,7 @@ decode_options (int argc, char **argv)
   args.backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
   args.version_control_string = 0;
   args.input_files = false;
-
+  
   subcommand_option = UNKNOWN_SUBCOMMAND;
   archive_format = DEFAULT_FORMAT;
   blocking_factor = DEFAULT_BLOCKING;
@@ -1895,7 +1913,9 @@ decode_options (int argc, char **argv)
   newer_mtime_option.tv_nsec = -1;
   recursion_option = FNM_LEADING_DIR;
   unquote_option = true;
-
+  tar_sparse_major = 1;
+  tar_sparse_minor = 0;
+  
   owner_option = -1;
   group_option = -1;