From: Sergey Poznyakoff Date: Wed, 1 Sep 2004 15:05:28 +0000 (+0000) Subject: (register_individual_file,is_individual_file): New functions. X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftar;a=commitdiff_plain;h=d14f101217c52f28fb9f4c6f14a504fef340a5f3 (register_individual_file,is_individual_file): New functions. --- diff --git a/src/names.c b/src/names.c index 57f8946..e91f108 100644 --- a/src/names.c +++ b/src/names.c @@ -56,6 +56,8 @@ static char *cached_no_such_gname; static uid_t cached_no_such_uid; static gid_t cached_no_such_gid; +static void register_individual_file (char const *name); + /* Given UID, find the corresponding UNAME. */ void uid_to_uname (uid_t uid, char **uname) @@ -358,6 +360,8 @@ name_next (int change_dirs) else { unquote_string (name_buffer); + if (incremental_option) + register_individual_file (name_buffer); return name_buffer; } } @@ -1002,6 +1006,28 @@ is_avoided_name (char const *name) return hash_string_lookup (avoided_name_table, name); } + +static Hash_table *individual_file_table; + +static void +register_individual_file (char const *name) +{ + struct stat st; + + if (deref_stat (dereference_option, name, &st) != 0) + return; /* Will be complained about later */ + if (S_ISDIR (st.st_mode)) + return; + + hash_string_insert (&individual_file_table, name); +} + +bool +is_individual_file (char const *name) +{ + return hash_string_lookup (individual_file_table, name); +} + static Hash_table *prefix_table[2];