X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=9350c50e4d6a52a28b9ffefc7bae8d7acd342c90;hb=1665d38fb74067f82e3de2ec11020e84f3a0ad39;hp=3d169e3bb368285dd9a7c899c74bc25e4a4b959b;hpb=7e2f7ead1cb5a79fa39c17fe2b5ae517b2ad2a45;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index 3d169e3..9350c50 100644 --- a/src/tar.c +++ b/src/tar.c @@ -481,7 +481,7 @@ Local file selection:\n\ stdout); #if !MSDOS fputs (_("\ - -N, --newer=DATE only store files newer than DATE\n\ + -N, --newer=DATE-OR-FILE only store files newer than DATE-OR-FILE\n\ --newer-mtime=DATE compare date and time when data changed only\n\ --after-date=DATE same as -N\n"), stdout); @@ -1286,7 +1286,8 @@ see the file named COPYING for details.")); || multi_volume_option || sparse_option) assert_format (FORMAT_MASK (OLDGNU_FORMAT) - | FORMAT_MASK (GNU_FORMAT)); + | FORMAT_MASK (GNU_FORMAT) + | FORMAT_MASK (POSIX_FORMAT)); if (occurrence_option) { @@ -1316,7 +1317,7 @@ see the file named COPYING for details.")); if (archive_names > 1 && !multi_volume_option) USAGE_ERROR ((0, 0, - _("Multiple archive files requires `-M' option"))); + _("Multiple archive files require `-M' option"))); if (listed_incremental_option && newer_mtime_option != TYPE_MINIMUM (time_t)) @@ -1343,6 +1344,22 @@ see the file named COPYING for details.")); (unsigned long) volume_label_max_len)); } + if (verify_option) + { + if (multi_volume_option) + USAGE_ERROR ((0, 0, _("Cannot verify multi-volume archives"))); + if (use_compress_program_option) + USAGE_ERROR ((0, 0, _("Cannot verify compressed archives"))); + } + + if (use_compress_program_option) + { + if (multi_volume_option) + USAGE_ERROR ((0, 0, _("Cannot use multi-volume compressed archives"))); + if (subcommand_option == UPDATE_SUBCOMMAND) + USAGE_ERROR ((0, 0, _("Cannot update compressed archives"))); + } + /* If ready to unlink hierarchies, so we are for simpler files. */ if (recursive_unlink_option) old_files_option = UNLINK_FIRST_OLD_FILES; @@ -1510,13 +1527,20 @@ main (int argc, char **argv) } void -destroy_stat (struct tar_stat_info *st) +tar_stat_init (struct tar_stat_info *st) +{ + memset (st, 0, sizeof (*st)); +} + +void +tar_stat_destroy (struct tar_stat_info *st) { free (st->orig_file_name); free (st->file_name); free (st->link_name); free (st->uname); free (st->gname); + free (st->sparse_map); memset (st, 0, sizeof (*st)); }