GLOBAL bool absolute_names_option;
+/* Display file times in UTC */
+GLOBAL bool utc_option;
+
/* This variable tells how to interpret newer_mtime_option, below. If zero,
files get archived if their mtime is not less than newer_mtime_option.
If nonzero, files get archived if *either* their ctime or mtime is not less
enum old_files
{
- DEFAULT_OLD_FILES, /* default */
+ DEFAULT_OLD_FILES, /* default */
NO_OVERWRITE_DIR_OLD_FILES, /* --no-overwrite-dir */
- OVERWRITE_OLD_FILES, /* --overwrite */
- UNLINK_FIRST_OLD_FILES, /* --unlink-first */
- KEEP_OLD_FILES /* --keep-old-files */
+ OVERWRITE_OLD_FILES, /* --overwrite */
+ UNLINK_FIRST_OLD_FILES, /* --unlink-first */
+ KEEP_OLD_FILES, /* --keep-old-files */
+ KEEP_NEWER_FILES, /* --keep-newer-files */
};
GLOBAL enum old_files old_files_option;
void dump_file (char *, int, dev_t);
union block *start_header (struct tar_stat_info *st);
void finish_header (struct tar_stat_info *, union block *, off_t);
+void simple_finish_header (union block *header);
+union block *start_private_header (const char *name, size_t size);
void write_eot (void);
void check_links (void);
void tar_stat_init (struct tar_stat_info *st);
void tar_stat_destroy (struct tar_stat_info *st);
+void usage (int) __attribute__ ((noreturn));
/* Module update.c. */
/* Module xheader.c. */
void xheader_decode (struct tar_stat_info *);
+void xheader_decode_global (void);
void xheader_store (char const *, struct tar_stat_info const *, void *);
void xheader_read (union block *, size_t);
+void xheader_write (char type, char *name, struct xheader *xhdr);
+void xheader_write_global (void);
void xheader_finish (struct xheader *);
void xheader_destroy (struct xheader *);
char *xheader_xhdr_name (struct tar_stat_info *st);
-char *xheader_ghdr_name (struct tar_stat_info *st);
+char *xheader_ghdr_name (void);
+void xheader_set_option (char *string);
/* Module system.c */
pid_t sys_child_open_for_uncompress (void);
ssize_t sys_write_archive_buffer (void);
bool sys_get_archive_stat (void);
+void sys_reset_uid_gid (void);
/* Module compare.c */
void report_difference (struct tar_stat_info *st, const char *message, ...);
/* Module sparse.c */
bool sparse_file_p (struct tar_stat_info *stat);
+bool sparse_member_p (struct tar_stat_info *stat);
+bool sparse_fixup_header (struct tar_stat_info *stat);
enum dump_status sparse_dump_file (int fd, struct tar_stat_info *stat);
enum dump_status sparse_extract_file (int fd, struct tar_stat_info *stat, off_t *size);
+enum dump_status sparse_skip_file (struct tar_stat_info *stat);
bool sparse_diff_file (int fd, struct tar_stat_info *stat);
+
+/* Module utf8.c */
+bool string_ascii_p (const char *str);
+bool utf8_convert(bool to_utf, const char *input, char **output);