with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "system.h"
+#include <system.h>
#include <fnmatch.h>
#include <argp.h>
#include <getdate.h>
#include <localedir.h>
+#include <rmt.h>
#include <prepargs.h>
#include <quotearg.h>
#include <xstrtol.h>
{ "star", STAR_FORMAT },
#endif
{ "gnu", GNU_FORMAT },
+ { "pax", POSIX_FORMAT }, /* An alias for posix */
{ NULL, 0 }
};
DELETE_OPTION,
EXCLUDE_OPTION,
FORCE_LOCAL_OPTION,
- FORMAT_OPTION,
GROUP_OPTION,
IGNORE_CASE_OPTION,
IGNORE_FAILED_READ_OPTION,
never, simple always make simple backups\n");
+/* NOTE:
+
+ 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?]
+ [I same as T =/= will harm star compatibility]
+
+ y per-file gzip compression
+ Y per-block gzip compression */
+
static struct argp_option options[] = {
{NULL, 0, NULL, 0,
N_("Main operation mode:"), 0},
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,
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 },
{NULL, 0, NULL, 0,
N_("Archive format selection:"), 60 },
- {"format", FORMAT_OPTION, N_("FORMAT"), 0,
+ {"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},
{"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,
{"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,
/* FIXME -V (--label) conflicts with the default short option for
--version */
- {0, 0, 0, 0}
+ {0, 0, 0, 0, 0, 0}
};
struct tar_args {
static void
set_use_compress_program_option (const char *string)
{
- if (use_compress_program_option && strcmp (use_compress_program_option, string) != 0)
+ if (use_compress_program_option
+ && strcmp (use_compress_program_option, string) != 0)
USAGE_ERROR ((0, 0, _("Conflicting compression options")));
use_compress_program_option = string;
" 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);
}
multi_volume_option = true;
break;
+
+ case 'n':
+ seekable_archive = true;
+ break;
#if !MSDOS
case 'N':
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 == '.')
{
force_local_option = true;
break;
- case FORMAT_OPTION:
+ case 'H':
set_archive_format (arg);
break;
break;
case RMT_COMMAND_OPTION:
- rmt_command_option = arg;
+ rmt_command = arg;
break;
case RSH_COMMAND_OPTION:
void
usage (int status)
{
- argp_help (&argp, stderr, ARGP_HELP_SEE, program_name);
+ argp_help (&argp, stderr, ARGP_HELP_SEE, (char*) program_name);
exit (status);
}
!(options->name == NULL
&& options->key == 0
&& options->arg == 0
- && options->flags
+ && options->flags == 0
&& options->doc == NULL); options++)
if (options->key == letter)
return options;
return NULL;
}
-/* FIXME:
-
- Available option letters are DEHIJQY and aenqy. Some are reserved:
-
- e exit immediately with a nonzero exit status if unexpected errors occur
- E use extended headers (draft POSIX headers, that is)
- I same as T (for compatibility with Solaris tar)
- n the archive is quickly seekable, so don't worry about random seeks
- q stop after extracting the first occurrence of the named file
- y per-file gzip compression
- Y per-block gzip compression */
-
static void
decode_options (int argc, char **argv)
{
- int optchar; /* option letter */
int index;
struct tar_args args;
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;
if (utc_option)
verbose_option = 2;
- if (!rmt_command_option)
- rmt_command_option = DEFAULT_RMT_COMMAND;
-
/* Forbid using -c with no input files whatsoever. Check that `-f -',
explicit or implied, is used correctly. */
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);