X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=1c9786a4fbbbe66050b6434bafa038d206da3ddd;hb=db46e2e2b35d5c6f9358801c60abc3b1f68c6dc1;hp=32e8522f8d3c0c1b9a62bb98abe9ed171a9844a3;hpb=07f380748c431d6f4e1f1d668792e9dd1fb3fc7f;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index 32e8522..1c9786a 100644 --- a/src/tar.c +++ b/src/tar.c @@ -400,7 +400,7 @@ or a device. *This* `tar' defaults to `-f%s -b%d'.\n"), DEFAULT_ARCHIVE, DEFAULT_BLOCKING); fputs (_("\ \n\ -Report bugs to .\n"), +Report bugs to .\n"), stdout); } exit (status); @@ -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; @@ -823,7 +822,7 @@ decode_options (int argc, char *const *argv) && g == (gid_t) g) group_option = g; else - ERROR ((TAREXIT_FAILURE, 0, _("Invalid group given on option"))); + FATAL_ERROR ((0, 0, _("Invalid group given on option"))); } break; @@ -832,9 +831,9 @@ decode_options (int argc, char *const *argv) = mode_compile (optarg, MODE_MASK_EQUALS | MODE_MASK_PLUS | MODE_MASK_MINUS); if (mode_option == MODE_INVALID) - ERROR ((TAREXIT_FAILURE, 0, _("Invalid mode given on option"))); + FATAL_ERROR ((0, 0, _("Invalid mode given on option"))); if (mode_option == MODE_MEMORY_EXHAUSTED) - ERROR ((TAREXIT_FAILURE, 0, _("Memory exhausted"))); + FATAL_ERROR ((0, 0, _("Memory exhausted"))); break; case NO_RECURSE_OPTION: @@ -854,7 +853,7 @@ decode_options (int argc, char *const *argv) && u == (uid_t) u) owner_option = u; else - ERROR ((TAREXIT_FAILURE, 0, _("Invalid owner given on option"))); + FATAL_ERROR ((0, 0, _("Invalid owner given on option"))); } 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 ();