X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fcommon.h;h=de5c8832fbb325eca8920421a6530901a7477e1f;hb=12cd9cea81152f8c8dc75eed55a4b733b1e08121;hp=58d2798d411d21b25600d2c67dcafc1f60d0d466;hpb=1e8f6d41c4ef5b9dfc5223a65a8f92a8b93e3646;p=chaz%2Ftar diff --git a/src/common.h b/src/common.h index 58d2798..de5c883 100644 --- a/src/common.h +++ b/src/common.h @@ -114,7 +114,13 @@ GLOBAL bool utc_option; 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; @@ -248,6 +254,9 @@ GLOBAL bool touch_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) @@ -404,15 +413,15 @@ void check_links (void); #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. */ @@ -611,6 +620,8 @@ void tar_stat_init (struct tar_stat_info *st); 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. */ @@ -639,7 +650,7 @@ void xheader_string_end (char const *keyword); 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); @@ -658,6 +669,7 @@ size_t sys_write_archive_buffer (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, ...);