+void update_archive (void);
+
+/* Module attrs.c. */
+#include "xattrs.h"
+
+/* Module xheader.c. */
+
+void xheader_decode (struct tar_stat_info *stat);
+void xheader_decode_global (struct xheader *xhdr);
+void xheader_store (char const *keyword, struct tar_stat_info *st,
+ void const *data);
+void xheader_read (struct xheader *xhdr, union block *header, off_t size);
+void xheader_write (char type, char *name, time_t t, struct xheader *xhdr);
+void xheader_write_global (struct xheader *xhdr);
+void xheader_finish (struct xheader *hdr);
+void xheader_destroy (struct xheader *hdr);
+char *xheader_xhdr_name (struct tar_stat_info *st);
+char *xheader_ghdr_name (void);
+void xheader_set_option (char *string);
+void xheader_string_begin (struct xheader *xhdr);
+void xheader_string_add (struct xheader *xhdr, char const *s);
+bool xheader_string_end (struct xheader *xhdr, 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);
+void xheader_xattr_init (struct tar_stat_info *st);
+void xheader_xattr_free (struct xattr_array *vals, size_t sz);
+void xheader_xattr_copy (const struct tar_stat_info *st,
+ struct xattr_array **vals, size_t *sz);
+void xheader_xattr_add (struct tar_stat_info *st,
+ const char *key, const char *val, size_t len);
+
+/* Module system.c */
+
+void sys_detect_dev_null_output (void);
+void sys_save_archive_dev_ino (void);
+void sys_wait_for_child (pid_t, bool);
+void sys_spawn_shell (void);
+bool sys_compare_uid (struct stat *a, struct stat *b);
+bool sys_compare_gid (struct stat *a, struct stat *b);
+bool sys_file_is_archive (struct tar_stat_info *p);
+bool sys_compare_links (struct stat *link_data, struct stat *stat_data);
+int sys_truncate (int fd);
+pid_t sys_child_open_for_compress (void);
+pid_t sys_child_open_for_uncompress (void);
+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);
+void sys_exec_checkpoint_script (const char *script_name,
+ const char *archive_name,
+ int checkpoint_number);
+
+/* Module compare.c */
+void report_difference (struct tar_stat_info *st, const char *message, ...)
+ __attribute__ ((format (printf, 2, 3)));
+
+/* Module sparse.c */
+bool sparse_member_p (struct tar_stat_info *st);
+bool sparse_fixup_header (struct tar_stat_info *st);
+enum dump_status sparse_dump_file (int, struct tar_stat_info *st);
+enum dump_status sparse_extract_file (int fd, struct tar_stat_info *st,
+ off_t *size);
+enum dump_status sparse_skip_file (struct tar_stat_info *st);
+bool sparse_diff_file (int, struct tar_stat_info *st);
+
+/* Module utf8.c */
+bool string_ascii_p (const char *str);
+bool utf8_convert (bool to_utf, char const *input, char **output);
+
+/* Module transform.c */
+#define XFORM_REGFILE 0x01
+#define XFORM_LINK 0x02
+#define XFORM_SYMLINK 0x04
+#define XFORM_ALL (XFORM_REGFILE|XFORM_LINK|XFORM_SYMLINK)
+
+void set_transform_expr (const char *expr);
+bool transform_name (char **pinput, int type);
+bool transform_name_fp (char **pinput, int type,
+ char *(*fun)(char *, void *), void *);
+bool transform_program_p (void);
+
+/* Module suffix.c */
+void set_compression_program_by_suffix (const char *name, const char *defprog);
+
+/* Module checkpoint.c */
+void checkpoint_compile_action (const char *str);
+void checkpoint_finish_compile (void);
+void checkpoint_run (bool do_write);
+
+/* Module warning.c */
+#define WARN_ALONE_ZERO_BLOCK 0x00000001
+#define WARN_BAD_DUMPDIR 0x00000002
+#define WARN_CACHEDIR 0x00000004
+#define WARN_CONTIGUOUS_CAST 0x00000008
+#define WARN_FILE_CHANGED 0x00000010
+#define WARN_FILE_IGNORED 0x00000020
+#define WARN_FILE_REMOVED 0x00000040
+#define WARN_FILE_SHRANK 0x00000080
+#define WARN_FILE_UNCHANGED 0x00000100
+#define WARN_FILENAME_WITH_NULS 0x00000200
+#define WARN_IGNORE_ARCHIVE 0x00000400
+#define WARN_IGNORE_NEWER 0x00000800
+#define WARN_NEW_DIRECTORY 0x00001000
+#define WARN_RENAME_DIRECTORY 0x00002000
+#define WARN_SYMLINK_CAST 0x00004000
+#define WARN_TIMESTAMP 0x00008000
+#define WARN_UNKNOWN_CAST 0x00010000
+#define WARN_UNKNOWN_KEYWORD 0x00020000
+#define WARN_XDEV 0x00040000
+#define WARN_DECOMPRESS_PROGRAM 0x00080000
+#define WARN_EXISTING_FILE 0x00100000
+#define WARN_XATTR_WRITE 0x00200000
+
+/* The warnings composing WARN_VERBOSE_WARNINGS are enabled by default
+ in verbose mode */
+#define WARN_VERBOSE_WARNINGS (WARN_RENAME_DIRECTORY|WARN_NEW_DIRECTORY|\
+ WARN_DECOMPRESS_PROGRAM|WARN_EXISTING_FILE)
+#define WARN_ALL (~WARN_VERBOSE_WARNINGS)
+
+void set_warning_option (const char *arg);
+
+extern int warning_option;
+
+#define WARNOPT(opt,args) \
+ do \
+ { \
+ if (warning_option & opt) WARN (args); \
+ } \
+ while (0)
+
+/* Module unlink.c */
+
+void queue_deferred_unlink (const char *name, bool is_dir);
+void finish_deferred_unlinks (void);
+
+/* Module exit.c */
+extern void (*fatal_exit_hook) (void);
+
+_GL_INLINE_HEADER_END