X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcommon.h;h=4bbab6d37ba37b4eaaf66d068dc6e0be47b65ed5;hb=34e5f665891b83ee388a72eb3892c83413d3beda;hp=de5c8832fbb325eca8920421a6530901a7477e1f;hpb=89e65f936dabe759bf9483e20ae512f37ca81912;p=chaz%2Ftar diff --git a/src/common.h b/src/common.h index de5c883..4bbab6d 100644 --- a/src/common.h +++ b/src/common.h @@ -1,7 +1,7 @@ /* Common declarations for the tar program. Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, - 2003, 2004, 2005 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006 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 @@ -303,7 +303,7 @@ struct name size_t length; /* cached strlen(name) */ uintmax_t found_count; /* number of times a matching file has been found */ - int isdir; + 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 */ @@ -325,9 +325,15 @@ GLOBAL bool unquote_option; GLOBAL bool test_label_option; /* Test archive volume label and exit */ -GLOBAL bool show_stored_names_option; /* When creating archive in verbose mode, - list member names as stored in the - archive */ +/* When creating archive in verbose mode, list member names as stored in the + archive */ +GLOBAL bool show_stored_names_option; + +/* Delay setting modification times and permissions of extracted directories + until the end of extraction. This variable helps correctly restore directory + timestamps from archives with an unusual member order. It is automatically + set for incremental archives. */ +GLOBAL bool delay_directory_restore_option; /* Declarations for each module. */ @@ -437,6 +443,7 @@ void verify_volume (void); void extr_init (void); void extract_archive (void); void extract_finish (void); +bool rename_directory (char *src, char *dst); /* Module delete.c. */ @@ -445,6 +452,7 @@ void delete_archive_members (void); /* Module incremen.c. */ char *get_directory_contents (char *, dev_t); +const char *append_incremental_renames (const char *dump); void read_directory_file (void); void write_directory_file (void); void purge_directory (char const *); @@ -452,7 +460,7 @@ void list_dumpdir (char *buffer, size_t size); void update_parent_directory (const char *name); size_t dumpdir_size (const char *p); -void get_gnu_dumpdir (void); +bool is_dumpdir (struct tar_stat_info *stat_info); /* Module list.c. */ @@ -507,6 +515,8 @@ void list_archive (void); void print_for_mkdir (char *, int, mode_t); void print_header (struct tar_stat_info *, off_t); void read_and (void (*) (void)); +enum read_header read_header_primitive (bool raw_extended_headers, + struct tar_stat_info *info); enum read_header read_header (bool); enum read_header tar_checksum (union block *header, bool silent); void skip_file (off_t); @@ -569,6 +579,8 @@ pid_t xfork (void); void xpipe (int[2]); void *page_aligned_alloc (void **, size_t); +int set_file_atime (int fd, char const *file, + struct timespec const timespec[2]); /* Module names.c. */ @@ -589,7 +601,7 @@ struct name *addname (char const *, int); int name_match (const char *); void names_notfound (void); void collect_and_sort_names (void); -struct name *name_scan (const char *); +struct name *name_scan (const char *, bool); char *name_from_list (void); void blank_name_list (void); char *new_name (const char *, const char *); @@ -650,7 +662,7 @@ void xheader_string_end (char const *keyword); bool xheader_keyword_deleted_p (const char *kw); char *xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n); - + /* Module system.c */ void sys_detect_dev_null_output (void);