X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fcommon.h;h=32b9ab3ac57b1825a9655fc36da898a6602cd19b;hb=87240ee7c477ae4960cf81d3c38691ae93ceaee8;hp=f2cdf2b3d334784119a441b511e0e50fae2e0433;hpb=51aee274e892923a3f8fdb774e4f6b90bce47437;p=chaz%2Ftar diff --git a/src/common.h b/src/common.h index f2cdf2b..32b9ab3 100644 --- a/src/common.h +++ b/src/common.h @@ -60,6 +60,8 @@ #define obstack_chunk_alloc xmalloc #define obstack_chunk_free free #include +#include +#include #include @@ -70,9 +72,6 @@ /* Information gleaned from the command line. */ -/* Name of this program. */ -GLOBAL const char *program_name; - /* Main command option. */ enum subcommand @@ -354,6 +353,7 @@ struct name GLOBAL dev_t ar_dev; GLOBAL ino_t ar_ino; +GLOBAL int seek_option; GLOBAL bool seekable_archive; GLOBAL dev_t root_device; @@ -399,6 +399,7 @@ extern char *volume_label; extern char *continued_file_name; extern uintmax_t continued_file_size; extern uintmax_t continued_file_offset; +extern off_t records_written; size_t available_space_after (union block *pointer); off_t current_block_ordinal (void); @@ -452,7 +453,7 @@ void finish_header (struct tar_stat_info *st, union block *header, void simple_finish_header (union block *header); union block * write_extended (bool global, struct tar_stat_info *st, union block *old_header); -union block *start_private_header (const char *name, size_t size); +union block *start_private_header (const char *name, size_t size, time_t t); void write_eot (void); void check_links (void); void exclusion_tag_warning (const char *dirname, const char *tagname, @@ -556,7 +557,8 @@ char const *tartime (struct timespec t, bool full_time); #define GID_FROM_HEADER(where) gid_from_header (where, sizeof (where)) #define MAJOR_FROM_HEADER(where) major_from_header (where, sizeof (where)) #define MINOR_FROM_HEADER(where) minor_from_header (where, sizeof (where)) -#define MODE_FROM_HEADER(where) mode_from_header (where, sizeof (where)) +#define MODE_FROM_HEADER(where, hbits) \ + mode_from_header (where, sizeof (where), hbits) #define OFF_FROM_HEADER(where) off_from_header (where, sizeof (where)) #define SIZE_FROM_HEADER(where) size_from_header (where, sizeof (where)) #define TIME_FROM_HEADER(where) time_from_header (where, sizeof (where)) @@ -566,7 +568,7 @@ char const *tartime (struct timespec t, bool full_time); gid_t gid_from_header (const char *buf, size_t size); major_t major_from_header (const char *buf, size_t size); minor_t minor_from_header (const char *buf, size_t size); -mode_t mode_from_header (const char *buf, size_t size); +mode_t mode_from_header (const char *buf, size_t size, unsigned *hbits); off_t off_from_header (const char *buf, size_t size); size_t size_from_header (const char *buf, size_t size); time_t time_from_header (const char *buf, size_t size); @@ -700,6 +702,7 @@ 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); +void set_exit_status (int val); /* Module update.c. */ @@ -715,7 +718,7 @@ 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, size_t size); -void xheader_write (char type, char *name, struct xheader *xhdr); +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); @@ -824,3 +827,11 @@ extern int warning_option; } \ 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); +