X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=0dfa9c1d12aba316865733de80a203294b1bd914;hb=2af87fa2776c8125a587a9b0c2c4fae3bf921ff7;hp=300a83428ce926386e641647c1582d1fe69d03e9;hpb=eb7e2aa9334d80747c6f6c4f093716fd030f3f15;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index 300a834..0dfa9c1 100644 --- a/src/tar.c +++ b/src/tar.c @@ -319,6 +319,7 @@ enum OCCURRENCE_OPTION, OLD_ARCHIVE_OPTION, ONE_FILE_SYSTEM_OPTION, + ONE_TOP_LEVEL_OPTION, OVERWRITE_DIR_OPTION, OVERWRITE_OPTION, OWNER_OPTION, @@ -489,6 +490,9 @@ static struct argp_option options[] = { {"keep-directory-symlink", KEEP_DIRECTORY_SYMLINK_OPTION, 0, 0, N_("preserve existing symlinks to directories when extracting"), GRID+1 }, + {"one-top-level", ONE_TOP_LEVEL_OPTION, 0, 0, + N_("create a subdirectory to avoid having loose files extracted"), + GRID+1 }, #undef GRID #define GRID 40 @@ -1167,6 +1171,9 @@ tar_help_filter (int key, const char *text, void *input) s = xasprintf (_("filter the archive through %s"), LZMA_PROGRAM); break; + case LZOP_OPTION: + s = xasprintf (_("filter the archive through %s"), LZOP_PROGRAM); + case 'J': s = xasprintf (_("filter the archive through %s"), XZ_PROGRAM); break; @@ -1438,6 +1445,10 @@ parse_opt (int key, char *arg, struct argp_state *state) one_file_system_option = true; break; + case ONE_TOP_LEVEL_OPTION: + one_top_level_option = true; + break; + case 'l': check_links_option = 1; break; @@ -2390,6 +2401,9 @@ decode_options (int argc, char **argv) subcommand_string (subcommand_option))); } + if (one_top_level_option && absolute_names_option) + USAGE_ERROR ((0, 0, _("--one-top-level cannot be used with --absolute-names"))); + if (archive_names == 0) { /* If no archive file name given, try TAPE from the environment, or