X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=a3e86923157ec155c25df1ccdb0a3ca9186ed1f1;hb=f218c29b13a1db019cca2e4016956e39ca87e051;hp=e92453290df5142582a66ae4ed1422f6f189ce81;hpb=cf2fa13bc5018f48cd945e384445f111d89b240a;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index e924532..a3e8692 100644 --- a/src/tar.c +++ b/src/tar.c @@ -187,6 +187,7 @@ enum CHECK_LINKS_OPTION, DELETE_OPTION, EXCLUDE_OPTION, + EXCLUDE_CACHES_OPTION, FORCE_LOCAL_OPTION, GROUP_OPTION, IGNORE_CASE_OPTION, @@ -208,6 +209,7 @@ enum NUMERIC_OWNER_OPTION, OCCURRENCE_OPTION, OLD_ARCHIVE_OPTION, + ONE_FILE_SYSTEM_OPTION, OVERWRITE_OPTION, OWNER_OPTION, PAX_OPTION, @@ -363,7 +365,8 @@ static struct argp_option options[] = { {"rsh-command", RSH_COMMAND_OPTION, N_("COMMAND"), 0, N_("use remote COMMAND instead of rsh"), 41 }, #ifdef DEVICE_PREFIX - {"-[0-7][lmh]", 0, NULL, OPTION_DOC, + {"-[0-7][lmh]", 0, NULL, OPTION_DOC, /* It is OK, since `name' will never be + translated */ N_("specify drive and density"), 41 }, #endif {NULL, '0', NULL, OPTION_HIDDEN, NULL, 41 }, @@ -405,13 +408,14 @@ static struct argp_option options[] = { {"format", 'H', N_("FORMAT"), 0, N_("create archive of the given format."), 61 }, - {"", 0, NULL, OPTION_DOC, N_("FORMAT is one of the following:"), 62}, - {"", 0, NULL, OPTION_DOC, N_("v7 old V7 tar format"), 63}, - {"", 0, NULL, OPTION_DOC, N_("oldgnu GNU format as per tar <= 1.12"), 63}, - {"", 0, NULL, OPTION_DOC, N_("gnu GNU tar 1.13.x format"), 63}, - {"", 0, NULL, OPTION_DOC, N_("ustar POSIX 1003.1-1988 (ustar) format"), 63 }, - {"", 0, NULL, OPTION_DOC, N_("posix POSIX 1003.1-2001 (pax) format"), 63 }, - + {NULL, 0, NULL, 0, N_("FORMAT is one of the following:"), 62 }, + {" v7", 0, NULL, OPTION_DOC, N_("old V7 tar format"), 63}, + {" oldgnu", 0, NULL, OPTION_DOC, N_("GNU format as per tar <= 1.12"), 63}, + {" gnu", 0, NULL, OPTION_DOC, N_("GNU tar 1.13.x format"), 63}, + {" ustar", 0, NULL, OPTION_DOC, N_("POSIX 1003.1-1988 (ustar) format"), 63 }, + {" pax", 0, NULL, OPTION_DOC, N_("POSIX 1003.1-2001 (pax) format"), 63 }, + {" posix", 0, NULL, OPTION_DOC, N_("Same as pax"), 63 }, + {"old-archive", OLD_ARCHIVE_OPTION, 0, 0, /* FIXME */ N_("same as --format=v7"), 68 }, {"portability", 0, 0, OPTION_ALIAS, NULL, 68 }, @@ -446,6 +450,8 @@ static struct argp_option options[] = { N_("exclude files, given as a PATTERN"), 71 }, {"exclude-from", 'X', N_("FILE"), 0, N_("exclude patterns listed in FILE"), 71 }, + {"exclude-caches", EXCLUDE_CACHES_OPTION, 0, 0, + N_("exclude directories containing a cache tag"), 71 }, {"ignore-case", IGNORE_CASE_OPTION, 0, 0, N_("exclusion ignores case"), 71 }, {"anchored", ANCHORED_OPTION, 0, 0, @@ -460,8 +466,9 @@ static struct argp_option options[] = { N_("exclude pattern wildcards do not match '/'"), 71 }, {"no-recursion", NO_RECURSION_OPTION, 0, 0, N_("avoid descending automatically in directories"), 71 }, - {"one-file-system", 'l', 0, 0, /* FIXME: emit warning */ + {"one-file-system", ONE_FILE_SYSTEM_OPTION, 0, 0, N_("stay in local file system when creating archive"), 71 }, + {NULL, 'l', 0, OPTION_HIDDEN, "", 71}, {"recursion", RECURSION_OPTION, 0, 0, N_("recurse into directories (default)"), 71 }, {"absolute-names", 'P', 0, 0, @@ -545,10 +552,14 @@ static void show_default_settings (FILE *stream) { fprintf (stream, - "--format=%s -f%s -b%d --rmt-command=%s --rsh-command=%s\n", + "--format=%s -f%s -b%d --rmt-command=%s", archive_format_string (DEFAULT_ARCHIVE_FORMAT), DEFAULT_ARCHIVE, DEFAULT_BLOCKING, - DEFAULT_RMT_COMMAND, REMOTE_SHELL); + DEFAULT_RMT_COMMAND); +#ifdef REMOTE_SHELL + fprintf (stream, " --rsh-command=%s", REMOTE_SHELL); +#endif + fprintf (stream, "\n"); } static void @@ -714,9 +725,19 @@ parse_opt(int key, char *arg, struct argp_state *state) break; case 'l': + /* Historically equivalent to --one-file-system. This usage is + incompatible with UNIX98 and POSIX specs and therefore is + deprecated. The semantics of -l option will be changed in + future versions. See TODO. + */ + WARN ((0, 0, + _("Semantics of -l option will change in the future releases."))); + WARN ((0, 0, + _("Please use --one-file-system option instead."))); + /* FALL THROUGH */ + case ONE_FILE_SYSTEM_OPTION: /* When dumping directories, don't dump files/subdirectories - that are on other filesystems. */ - + that are on other filesystems. */ one_file_system_option = true; break; @@ -915,6 +936,10 @@ parse_opt(int key, char *arg, struct argp_state *state) add_exclude (excluded, arg, args->exclude_options | recursion_option); break; + case EXCLUDE_CACHES_OPTION: + exclude_caches_option = true; + break; + case FORCE_LOCAL_OPTION: force_local_option = true; break; @@ -1366,7 +1391,7 @@ decode_options (int argc, char **argv) if (argp_parse (&argp, argc, argv, ARGP_IN_ORDER|ARGP_NO_HELP, &index, &args)) - exit (1); /* FIXME */ + exit (1); /* Special handling for 'o' option: