GLOBAL bool block_number_option;
-GLOBAL bool checkpoint_option;
+GLOBAL unsigned checkpoint_option;
+
+enum checkpoint_style
+ {
+ checkpoint_text,
+ checkpoint_dot
+ };
+
+GLOBAL enum checkpoint_style checkpoint_style;
/* Specified name of compression program, or "gzip" as implied by -z. */
GLOBAL const char *use_compress_program_option;
/* List of tape drive names, number of such tape drives, allocated number,
and current cursor in list. */
GLOBAL const char **archive_name_array;
-GLOBAL int archive_names;
-GLOBAL int allocated_archive_names;
+GLOBAL size_t archive_names;
+GLOBAL size_t allocated_archive_names;
GLOBAL const char **archive_name_cursor;
/* Output index file name. */
/* Structure for keeping track of filenames and lists thereof. */
struct name
{
- struct name *next;
- size_t length; /* cached strlen(name) */
+ struct name *next; /* Link to the next element */
+ int change_dir; /* Number of the directory to change to.
+ Set with the -C option. */
uintmax_t found_count; /* number of times a matching file has
been found */
- int explicit; /* was explicitely given in the command line */
- char firstch; /* first char is literally matched */
- char regexp; /* this name is a regexp, not literal */
- int change_dir; /* set with the -C option */
+ int explicit; /* this name was explicitely given in the
+ command line */
+ int matching_flags; /* this name is a regexp, not literal */
char const *dir_contents; /* for incremental_option */
- char fake; /* dummy entry */
+
+ size_t length; /* cached strlen(name) */
char name[1];
};
GLOBAL bool test_label_option; /* Test archive volume label and exit */
-/* When creating archive in verbose mode, list member names as stored in the
- archive */
-GLOBAL bool show_stored_names_option;
+/* Show file or archive names after transformation.
+ In particular, when creating archive in verbose mode, list member names
+ as stored in the archive */
+GLOBAL bool show_transformed_names_option;
/* Delay setting modification times and permissions of extracted directories
until the end of extraction. This variable helps correctly restore directory
set for incremental archives. */
GLOBAL bool delay_directory_restore_option;
+/* Warn about implicit use of the wildcards in command line arguments.
+ (Default for tar prior to 1.15.91, but changed afterwards */
+GLOBAL bool warn_regex_usage;
\f
/* Declarations for each module. */
bool file_dumpable_p (struct tar_stat_info *);
void create_archive (void);
void pad_archive (off_t size_left);
-void dump_file (char *, int, dev_t);
+void dump_file (const char *, int, dev_t);
union block *start_header (struct tar_stat_info *st);
void finish_header (struct tar_stat_info *, union block *, off_t);
void simple_finish_header (union block *header);
int uname_to_uid (char const *, uid_t *);
void init_names (void);
-void name_add (const char *);
-void name_init (void);
+void name_add_name (const char *, int);
+void name_add_dir (const char *name);
void name_term (void);
-char *name_next (int);
+const char *name_next (int);
void name_gather (void);
struct name *addname (char const *, int);
int name_match (const char *);
/* Module utf8.c */
bool string_ascii_p (const char *str);
bool utf8_convert (bool to_utf, char const *input, char **output);
+
+/* Module transform.c */
+void set_transform_expr (const char *expr);
+bool transform_name (char **pinput);
+bool transform_name_fp (char **pinput, char *(*fun)(char *));
+
+