than newer_mtime_option. */
GLOBAL int after_date_option;
-GLOBAL bool atime_preserve_option;
+enum atime_preserve
+{
+ no_atime_preserve,
+ replace_atime_preserve,
+ system_atime_preserve
+};
+GLOBAL enum atime_preserve atime_preserve_option;
GLOBAL bool backup_option;
GLOBAL char *to_command_option;
GLOBAL bool ignore_command_error_option;
+/* Restrict some potentially harmful tar options */
+GLOBAL bool restrict_option;
+
/* Return true if the extracted files are not being written to disk */
#define EXTRACT_OVER_PIPE (to_stdout_option || to_command_option)
#define UNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
#define GNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
-void gid_to_chars (gid_t, char *, size_t);
-void major_to_chars (major_t, char *, size_t);
-void minor_to_chars (minor_t, char *, size_t);
-void mode_to_chars (mode_t, char *, size_t);
-void off_to_chars (off_t, char *, size_t);
-void size_to_chars (size_t, char *, size_t);
-void time_to_chars (time_t, char *, size_t);
-void uid_to_chars (uid_t, char *, size_t);
-void uintmax_to_chars (uintmax_t, char *, size_t);
+bool gid_to_chars (gid_t, char *, size_t);
+bool major_to_chars (major_t, char *, size_t);
+bool minor_to_chars (minor_t, char *, size_t);
+bool mode_to_chars (mode_t, char *, size_t);
+bool off_to_chars (off_t, char *, size_t);
+bool size_to_chars (size_t, char *, size_t);
+bool time_to_chars (time_t, char *, size_t);
+bool uid_to_chars (uid_t, char *, size_t);
+bool uintmax_to_chars (uintmax_t, char *, size_t);
void string_to_chars (char const *, char *, size_t);
/* Module diffarch.c. */
void xpipe (int[2]);
void *page_aligned_alloc (void **, size_t);
-
+int set_file_atime (int fd, char const *file,
+ struct timespec const timespec[2]);
+
/* Module names.c. */
extern struct name *gnu_list_name;
void tar_stat_destroy (struct tar_stat_info *st);
void usage (int) __attribute__ ((noreturn));
int tar_timespec_cmp (struct timespec a, struct timespec b);
+const char *archive_format_string (enum archive_format fmt);
+const char *subcommand_string (enum subcommand c);
/* Module update.c. */
bool xheader_keyword_deleted_p (const char *kw);
char *xheader_format_name (struct tar_stat_info *st, const char *fmt,
size_t n);
-
+
/* Module system.c */
void sys_detect_dev_null_output (void);
bool sys_get_archive_stat (void);
int sys_exec_command (char *file_name, int typechar, struct tar_stat_info *st);
void sys_wait_command (void);
+int sys_exec_info_script (const char **archive_name, int volume_number);
/* Module compare.c */
void report_difference (struct tar_stat_info *st, const char *message, ...);