]> Dogcows Code - chaz/tar/blobdiff - src/names.c
Started merging with cpio into paxutils.
[chaz/tar] / src / names.c
index 57f894686d68142f683182a93c916f1ba78bfe8e..a5f2f7e70f346ff1c24e757501fb63790fdfad46 100644 (file)
@@ -17,7 +17,7 @@
    with this program; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
-#include "system.h"
+#include <system.h>
 
 #include <fnmatch.h>
 #include <hash.h>
@@ -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.0206 seconds and 4 git commands to generate.