]> Dogcows Code - chaz/tar/commitdiff
(register_individual_file,is_individual_file): New functions.
authorSergey Poznyakoff <gray@gnu.org.ua>
Wed, 1 Sep 2004 15:05:28 +0000 (15:05 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Wed, 1 Sep 2004 15:05:28 +0000 (15:05 +0000)
src/names.c

index 57f894686d68142f683182a93c916f1ba78bfe8e..e91f1081d22a227b347fa3db09339b4ffc8cc331 100644 (file)
@@ -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);
 }
 
+\f
+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);
+}
+
 \f
 
 static Hash_table *prefix_table[2];
This page took 0.024093 seconds and 4 git commands to generate.