/* Common declarations for the tar program.
Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+ Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
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 FILE *stdlis;
extern bool write_archive_to_stdout;
extern char *volume_label;
+extern size_t volume_label_count;
extern char *continued_file_name;
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);
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, off_t block_ordinal);
+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_primitive (bool raw_extended_headers,
- struct tar_stat_info *info);
-enum read_header read_header (bool raw_extended_headers);
+enum read_header read_header (union block **return_block,
+ struct tar_stat_info *info,
+ 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);