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;
/* 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 */
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);
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;
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);