X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=50202a29d9bfd0e72eec2d5b20fcf39ed02138d9;hb=da3f3e0b3ba1a283787845d1553c5bb1a096533f;hp=155645d7ae68d23ae5ea2741184fbede114bdae4;hpb=d4d6c23008d643fc38b9eec93a90d400684fbdc8;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index 155645d..50202a2 100644 --- a/src/tar.c +++ b/src/tar.c @@ -128,6 +128,7 @@ static struct fmttab { { "star", STAR_FORMAT }, #endif { "gnu", GNU_FORMAT }, + { "pax", POSIX_FORMAT }, /* An alias for posix */ { NULL, 0 } }; @@ -249,14 +250,13 @@ The version control may be set with --backup or VERSION_CONTROL, values are:\n\n /* NOTE: - Available option letters are DEIJQY and aenqy. Consider the following + Available option letters are DEIJQY and aeqy. Consider the following assignments: [For Solaris tar compatibility] e exit immediately with a nonzero exit status if unexpected errors occur E use extended headers (--format=posix) [q alias for --occurrence=1 =/= this would better be used for quiet?] - n the archive is quickly seekable, so don't worry about random seeks [I same as T =/= will harm star compatibility] y per-file gzip compression @@ -270,7 +270,7 @@ static struct argp_option options[] = { N_("list the contents of an archive"), 10 }, {"extract", 'x', 0, 0, N_("extract files from an archive"), 10 }, - {"get", 0, 0, OPTION_ALIAS, NULL}, + {"get", 0, 0, OPTION_ALIAS, NULL, 0 }, {"create", 'c', 0, 0, N_("create a new archive"), 10 }, {"diff", 'd', 0, 0, @@ -317,7 +317,9 @@ static struct argp_option options[] = { N_("do not exit with nonzero on unreadable files"), 21 }, {"occurrence", OCCURRENCE_OPTION, N_("NUMBER"), OPTION_ARG_OPTIONAL, N_("process only the NUMth occurrence of each file in the archive. This option is valid only in conjunction with one of the subcommands --delete, --diff, --extract or --list and when a list of files is given either on the command line or via -T option. NUMBER defaults to 1."), 21 }, - + {"seek", 'n', NULL, 0, + N_("Archive is seekable"), 21 }, + {NULL, 0, NULL, 0, N_("Handling of file attributes:"), 30 }, @@ -446,9 +448,9 @@ static struct argp_option options[] = { {"ignore-case", IGNORE_CASE_OPTION, 0, 0, N_("exclusion ignores case"), 71 }, {"anchored", ANCHORED_OPTION, 0, 0, - N_("exclude patterns match file name start (default)"), 71 }, + N_("exclude patterns match file name start"), 71 }, {"no-anchored", NO_ANCHORED_OPTION, 0, 0, - N_("exclude patterns match after any /"), 71 }, + N_("exclude patterns match after any / (default)"), 71 }, {"no-ignore-case", NO_IGNORE_CASE_OPTION, 0, 0, N_("exclusion is case sensitive (default)"), 71 }, {"no-wildcards", NO_WILDCARDS_OPTION, 0, 0, @@ -490,7 +492,7 @@ static struct argp_option options[] = { {"verbose", 'v', 0, 0, N_("verbosely list files processed"), 81 }, {"checkpoint", CHECKPOINT_OPTION, 0, 0, - N_("print directory names while reading the archive"), 81 }, + N_("display progress messages every 10th record"), 81 }, {"check-links", CHECK_LINKS_OPTION, 0, 0, N_("print a message if not all links are dumped"), 82 }, {"totals", TOTALS_OPTION, 0, 0, @@ -525,7 +527,7 @@ static struct argp_option options[] = { /* FIXME -V (--label) conflicts with the default short option for --version */ - {0, 0, 0, 0} + {0, 0, 0, 0, 0, 0} }; struct tar_args { @@ -581,13 +583,13 @@ for complete list of authors.\n")); " the Free Software Foundation; either version 2 of the License, or\n" " (at your option) any later version.\n" "\n" - " GNU Mailutils is distributed in the hope that it will be useful,\n" + " GNU tar is distributed in the hope that it will be useful,\n" " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" " GNU General Public License for more details.\n" "\n" " You should have received a copy of the GNU General Public License\n" - " along with GNU Mailutils; if not, write to the Free Software\n" + " along with GNU tar; if not, write to the Free Software\n" " Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\n")); exit (0); } @@ -738,6 +740,10 @@ parse_opt(int key, char *arg, struct argp_state *state) multi_volume_option = true; break; + + case 'n': + seekable_archive = true; + break; #if !MSDOS case 'N': @@ -748,7 +754,7 @@ parse_opt(int key, char *arg, struct argp_state *state) if (NEWER_OPTION_INITIALIZED (newer_mtime_option)) USAGE_ERROR ((0, 0, _("More than one threshold date"))); - if (FILESYSTEM_PREFIX_LEN (arg) != 0 + if (FILE_SYSTEM_PREFIX_LEN (arg) != 0 || ISSLASH (*arg) || *arg == '.') { @@ -1262,7 +1268,7 @@ find_argp_option (struct argp_option *options, int letter) !(options->name == NULL && options->key == 0 && options->arg == 0 - && options->flags + && options->flags == 0 && options->doc == NULL); options++) if (options->key == letter) return options; @@ -1272,7 +1278,6 @@ find_argp_option (struct argp_option *options, int letter) static void decode_options (int argc, char **argv) { - int optchar; /* option letter */ int index; struct tar_args args; @@ -1284,7 +1289,6 @@ decode_options (int argc, char **argv) args.backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX"); args.version_control_string = 0; args.input_files = 0; - subcommand_option = UNKNOWN_SUBCOMMAND; archive_format = DEFAULT_FORMAT; @@ -1576,10 +1580,7 @@ decode_options (int argc, char **argv) int main (int argc, char **argv) { -#if HAVE_CLOCK_GETTIME - if (clock_gettime (CLOCK_REALTIME, &start_timespec) != 0) -#endif - start_time = time (0); + set_start_time (); program_name = argv[0]; setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR);