浏览代码

(decode_options): Set newer_time_option to TYPE_MINIMUM, so that
negative timestamps are handled correctly.
Replace invocations of xstrtol and xstrtoul with xstrtoumax, for
uniformity (and so that we don't need to have the other fns).
(main): Remove call to init_total_written; no longer needed.

Paul Eggert 26 年之前
父节点
当前提交
617f136b46
共有 1 个文件被更改,包括 8 次插入12 次删除
  1. 8 12
      src/tar.c

+ 8 - 12
src/tar.c

@@ -453,6 +453,7 @@ decode_options (int argc, char *const *argv)
   blocking_factor = DEFAULT_BLOCKING;
   record_size = DEFAULT_BLOCKING * BLOCKSIZE;
   excluded = new_exclude ();
+  newer_mtime_option = TYPE_MINIMUM (time_t);
 
   owner_option = -1;
   group_option = -1;
@@ -550,11 +551,11 @@ decode_options (int argc, char *const *argv)
 
       case 'b':
 	{
-	  long l;
-	  if (! (xstrtol (optarg, (char **) 0, 10, &l, "") == LONGINT_OK
-		 && l == (blocking_factor = l)
+	  uintmax_t u;
+	  if (! (xstrtoumax (optarg, (char **) 0, 10, &u, "") == LONGINT_OK
+		 && u == (blocking_factor = u)
 		 && 0 < blocking_factor
-		 && l == (record_size = l * (size_t) BLOCKSIZE) / BLOCKSIZE))
+		 && u == (record_size = u * (size_t) BLOCKSIZE) / BLOCKSIZE))
 	    USAGE_ERROR ((0, 0, _("Invalid blocking factor")));
 	}
 	break;
@@ -653,12 +654,10 @@ decode_options (int argc, char *const *argv)
 
       case 'L':
 	{
-	  unsigned long u;
-	  if (xstrtoul (optarg, (char **) 0, 10, &u, "") != LONG_MAX)
+	  uintmax_t u;
+	  if (xstrtoumax (optarg, (char **) 0, 10, &u, "") != LONG_MAX)
 	    USAGE_ERROR ((0, 0, _("Invalid tape length")));
-	  clear_tarlong (tape_length_option);
-	  add_to_tarlong (tape_length_option, u);
-	  mult_tarlong (tape_length_option, 1024);
+	  tape_length_option = 1024 * (tarlong) u;
 	  multi_volume_option = 1;
 	}
 	break;
@@ -1155,9 +1154,6 @@ main (int argc, char *const *argv)
       break;
 
     case CREATE_SUBCOMMAND:
-      if (totals_option)
-	init_total_written ();
-
       create_archive ();
       name_close ();