#define GLOBAL
#include "common.h"
+#include "quotearg.h"
#include "xstrtol.h"
time_t get_date ();
# define DEFAULT_BLOCKING 20
#endif
-static void usage PARAMS ((int));
+static void usage PARAMS ((int)) __attribute__ ((noreturn));
\f
/* Miscellaneous. */
if (!confirm_file)
{
if (archive == 0 || stdin_used_by)
- confirm_file = fopen (TTY_NAME, "r");
+ {
+ confirm_file = fopen (TTY_NAME, "r");
+ if (! confirm_file)
+ open_fatal (TTY_NAME);
+ }
else
{
request_stdin ("-w");
confirm_file = stdin;
}
-
- if (!confirm_file)
- FATAL_ERROR ((0, 0, _("Cannot read confirmation from user")));
}
- fprintf (stdlis, "%s %s?", message_action, message_name);
+ fprintf (stdlis, "%s %s?", message_action, quote (message_name));
fflush (stdlis);
{
NEWER_MTIME_OPTION,
NO_RECURSE_OPTION,
NULL_OPTION,
+ OVERWRITE_OPTION,
OWNER_OPTION,
POSIX_OPTION,
PRESERVE_OPTION,
{"numeric-owner", no_argument, &numeric_owner_option, 1},
{"old-archive", no_argument, 0, 'o'},
{"one-file-system", no_argument, 0, 'l'},
+ {"overwrite", no_argument, 0, OVERWRITE_OPTION},
{"owner", required_argument, 0, OWNER_OPTION},
{"portability", no_argument, 0, 'o'},
{"posix", no_argument, 0, POSIX_OPTION},
Operation modifiers:\n\
-W, --verify attempt to verify the archive after writing it\n\
--remove-files remove files after adding them to the archive\n\
- -k, --keep-old-files don't overwrite existing files when extracting\n\
+ -k, --keep-old-files don't replace existing files when extracting\n\
+ --overwrite overwrite existing files when extracting\n\
-U, --unlink-first remove each file prior to extracting over it\n\
--recursive-unlink empty hierarchies prior to extracting directory\n\
-S, --sparse handle sparse files efficiently\n\
break;
case 'k':
- /* Don't overwrite existing files. */
-
- keep_old_files_option = 1;
+ /* Don't replace existing files. */
+ old_files_option = KEEP_OLD_FILES;
break;
case 'K':
newer_mtime_option = get_date (optarg, 0);
if (newer_mtime_option == (time_t) -1)
- WARN ((0, 0, _("Substituting %s for unknown date format `%s'"),
- tartime (newer_mtime_option), optarg));
+ WARN ((0, 0, _("Substituting %s for unknown date format %s"),
+ tartime (newer_mtime_option), quote (optarg)));
break;
#endif /* not MSDOS */
break;
case 'U':
- unlink_first_option = 1;
+ old_files_option = UNLINK_FIRST_OLD_FILES;
break;
case 'v':
case 'X':
if (add_exclude_file (add_filtered_exclude, 0, optarg, '\n') != 0)
- FATAL_ERROR ((0, errno, "%s", optarg));
+ {
+ int e = errno;
+ FATAL_ERROR ((0, e, "%s", quotearg_colon (optarg)));
+ }
break;
case 'z':
filename_terminator = '\0';
break;
+ case OVERWRITE_OPTION:
+ old_files_option = OVERWRITE_OLD_FILES;
+ break;
+
case OWNER_OPTION:
if (! (strlen (optarg) < UNAME_FIELD_SIZE
&& uname_to_uid (optarg, &owner_option)))
/* If ready to unlink hierarchies, so we are for simpler files. */
if (recursive_unlink_option)
- unlink_first_option = 1;
+ old_files_option = UNLINK_FIRST_OLD_FILES;
/* Forbid using -c with no input files whatsoever. Check that `-f -',
explicit or implied, is used correctly. */
exit_status = TAREXIT_SUCCESS;
filename_terminator = '\n';
+ set_quoting_style (0, escape_quoting_style);
/* Pre-allocate a few structures. */