X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcommon.h;h=d2de528e0e94809eef7fa0efbb1e3a8975faa3ad;hb=c3fa22fc8023ad21ad32b13f934c3324756c9236;hp=2af403c102535725e4279b2526242071edd5b3b1;hpb=166b7c7d028c3dbcfded5c834b9bf752d2fb41f0;p=chaz%2Ftar diff --git a/src/common.h b/src/common.h index 2af403c..d2de528 100644 --- a/src/common.h +++ b/src/common.h @@ -85,7 +85,8 @@ enum subcommand DIFF_SUBCOMMAND, /* -d */ EXTRACT_SUBCOMMAND, /* -x */ LIST_SUBCOMMAND, /* -t */ - UPDATE_SUBCOMMAND /* -u */ + UPDATE_SUBCOMMAND, /* -u */ + TEST_LABEL_SUBCOMMAND, /* --test-label */ }; GLOBAL enum subcommand subcommand_option; @@ -362,8 +363,6 @@ GLOBAL dev_t root_device; /* Unquote filenames */ GLOBAL bool unquote_option; -GLOBAL bool test_label_option; /* Test archive volume label and exit */ - /* Show file or archive names after transformation. In particular, when creating archive in verbose mode, list member names as stored in the archive */ @@ -403,6 +402,8 @@ extern uintmax_t continued_file_size; extern uintmax_t continued_file_offset; extern off_t records_written; +char *drop_volume_label_suffix (const char *label); + size_t available_space_after (union block *pointer); off_t current_block_ordinal (void); void close_archive (void); @@ -547,6 +548,17 @@ enum read_header HEADER_FAILURE /* ill-formed header, or bad checksum */ }; +/* Operation mode for read_header: */ + +enum read_header_mode +{ + read_header_auto, /* process extended headers automatically */ + read_header_x_raw, /* return raw extended headers (return + HEADER_SUCCESS_EXTENDED) */ + read_header_x_global /* when POSIX global extended header is read, + decode it and return + HEADER_SUCCESS_EXTENDED */ +}; extern union block *current_header; extern enum archive_format current_format; extern size_t recent_long_name_blocks; @@ -578,13 +590,14 @@ uid_t uid_from_header (const char *buf, size_t size); uintmax_t uintmax_from_header (const char *buf, size_t size); void list_archive (void); +void test_archive_label (void); void print_for_mkdir (char *dirname, int length, mode_t mode); void print_header (struct tar_stat_info *st, union block *blk, off_t block_ordinal); void read_and (void (*do_something) (void)); enum read_header read_header (union block **return_block, struct tar_stat_info *info, - bool raw_extended_headers); + enum read_header_mode m); enum read_header tar_checksum (union block *header, bool silent); void skip_file (off_t size); void skip_member (void);