]> Dogcows Code - chaz/tar/blobdiff - src/common.h
Read POSIX multivolume archives split at the header boundary.
[chaz/tar] / src / common.h
index 2af403c102535725e4279b2526242071edd5b3b1..d2de528e0e94809eef7fa0efbb1e3a8975faa3ad 100644 (file)
@@ -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);
This page took 0.021083 seconds and 4 git commands to generate.