(<time.h>): Include.

(time): Declare if not defined.
(confirm): Don't read past EOF.
(long_options, usage): Add --no-same-owner, --no-same-permissions.
(main): Use clock_gettime if available.
This commit is contained in:
Paul Eggert
1999-09-24 23:44:52 +00:00
parent 6e36ce5668
commit 825b72c52b

View File

@@ -25,6 +25,11 @@
# define SIGCHLD SIGCLD
#endif
#include <time.h>
#ifndef time
time_t time ();
#endif
/* The following causes "common.h" to produce definitions of all the global
variables, rather than just "extern" declarations of them. GNU tar does
depend on the system loader to preset all GLOBAL variables to neutral (or
@@ -75,6 +80,7 @@ int
confirm (const char *message_action, const char *message_name)
{
static FILE *confirm_file;
static int confirm_file_EOF;
if (!confirm_file)
{
@@ -94,13 +100,19 @@ confirm (const char *message_action, const char *message_name)
fflush (stdlis);
{
int reply = getc (confirm_file);
int reply = confirm_file_EOF ? EOF : getc (confirm_file);
int character;
for (character = reply;
character != '\n' && character != EOF;
character != '\n';
character = getc (confirm_file))
continue;
if (character == EOF)
{
confirm_file_EOF = 1;
fputc ('\n', stdlis);
fflush (stdlis);
break;
}
return reply == 'y' || reply == 'Y';
}
}
@@ -206,6 +218,8 @@ struct option long_options[] =
{"newer-mtime", required_argument, 0, NEWER_MTIME_OPTION},
{"null", no_argument, 0, NULL_OPTION},
{"no-recursion", no_argument, 0, NO_RECURSE_OPTION},
{"no-same-owner", no_argument, &same_owner_option, -1},
{"no-same-permissions", no_argument, &same_permissions_option, -1},
{"numeric-owner", no_argument, &numeric_owner_option, 1},
{"old-archive", no_argument, 0, 'o'},
{"one-file-system", no_argument, 0, 'l'},
@@ -294,7 +308,8 @@ Operation modifiers:\n\
-S, --sparse handle sparse files efficiently\n\
-O, --to-stdout extract files to standard output\n\
-G, --incremental handle old GNU-format incremental backup\n\
-g, --listed-incremental handle new GNU-format incremental backup\n\
-g, --listed-incremental=FILE\n\
handle new GNU-format incremental backup\n\
--ignore-failed-read do not exit with nonzero on unreadable files\n"),
stdout);
fputs (_("\
@@ -306,8 +321,10 @@ Handling of file attributes:\n\
--atime-preserve don't change access times on dumped files\n\
-m, --modification-time don't extract file modified time\n\
--same-owner try extracting files with the same ownership\n\
--no-same-owner extract files as yourself\n\
--numeric-owner always use numbers for user/group names\n\
-p, --same-permissions extract all protection information\n\
-p, --same-permissions extract permissions information\n\
--no-same-permissions do not extract permissions information\n\
--preserve-permissions same as -p\n\
-s, --same-order sort names to extract to match archive\n\
--preserve-order same as -s\n\
@@ -1137,6 +1154,10 @@ Written by John Gilmore and Jay Fenlason.\n"),
int
main (int argc, char *const *argv)
{
#if HAVE_CLOCK_GETTIME
if (clock_gettime (CLOCK_REALTIME, &start_timespec) != 0)
#endif
start_time = time (0);
program_name = argv[0];
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);