X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcommon.h;h=5cb2efb82216cc22fceded2f862def2f1074b82d;hb=38f08784bc95745e0c5e8308d098c3bc89cc9ba5;hp=673cfa0580bac162c5e8eb4386ac9851062e068c;hpb=4669306854d37349344d89117e8d2ff0239a3b26;p=chaz%2Ftar diff --git a/src/common.h b/src/common.h index 673cfa0..5cb2efb 100644 --- a/src/common.h +++ b/src/common.h @@ -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. */ @@ -413,15 +419,15 @@ void check_links (void); #define UNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf)) #define GNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf)) -void gid_to_chars (gid_t, char *, size_t); -void major_to_chars (major_t, char *, size_t); -void minor_to_chars (minor_t, char *, size_t); -void mode_to_chars (mode_t, char *, size_t); -void off_to_chars (off_t, char *, size_t); -void size_to_chars (size_t, char *, size_t); -void time_to_chars (time_t, char *, size_t); -void uid_to_chars (uid_t, char *, size_t); -void uintmax_to_chars (uintmax_t, char *, size_t); +bool gid_to_chars (gid_t, char *, size_t); +bool major_to_chars (major_t, char *, size_t); +bool minor_to_chars (minor_t, char *, size_t); +bool mode_to_chars (mode_t, char *, size_t); +bool off_to_chars (off_t, char *, size_t); +bool size_to_chars (size_t, char *, size_t); +bool time_to_chars (time_t, char *, size_t); +bool uid_to_chars (uid_t, char *, size_t); +bool uintmax_to_chars (uintmax_t, char *, size_t); void string_to_chars (char const *, char *, size_t); /* Module diffarch.c. */ @@ -569,7 +575,9 @@ 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. */ extern struct name *gnu_list_name; @@ -589,7 +597,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 *);