]> Dogcows Code - chaz/tar/blobdiff - src/names.c
(set_start_time, removed_prefixes_p): New prototypes.
[chaz/tar] / src / names.c
index 5553021f1954e458ffa680e9a6c0c234d8be7816..57f894686d68142f683182a93c916f1ba78bfe8e 100644 (file)
@@ -935,7 +935,7 @@ new_name (const char *file_name, const char *name)
 bool
 excluded_name (char const *name)
 {
-  return excluded_filename (excluded, name + FILESYSTEM_PREFIX_LEN (name));
+  return excluded_filename (excluded, name + FILE_SYSTEM_PREFIX_LEN (name));
 }
 \f
 /* Hash tables of strings.  */
@@ -1001,7 +1001,22 @@ is_avoided_name (char const *name)
 {
   return hash_string_lookup (avoided_name_table, name);
 }
+
 \f
+
+static Hash_table *prefix_table[2];
+
+/* Return true if file names of some members in the archive were stripped off
+   their leading components. We could have used
+        return prefix_table[0] || prefix_table[1]
+   but the following seems to be safer: */
+bool
+removed_prefixes_p (void)
+{
+  return (prefix_table[0] && hash_get_n_entries (prefix_table[0]) != 0)
+         || (prefix_table[1] && hash_get_n_entries (prefix_table[1]) != 0);
+}
+
 /* Return a safer suffix of FILE_NAME, or "." if it has no safer
    suffix.  Check for fully specified file names and other atrocities.
    Warn the user if we do not return NAME.  If LINK_TARGET is 1,
@@ -1019,7 +1034,7 @@ safer_name_suffix (char const *file_name, bool link_target)
       /* Skip file system prefixes, leading file name components that contain
         "..", and leading slashes.  */
 
-      size_t prefix_len = FILESYSTEM_PREFIX_LEN (file_name);
+      size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (file_name);
 
       for (p = file_name + prefix_len; *p; )
        {
@@ -1041,7 +1056,6 @@ safer_name_suffix (char const *file_name, bool link_target)
 
       if (prefix_len)
        {
-         static Hash_table *prefix_table[2];
          char *prefix = alloca (prefix_len + 1);
          memcpy (prefix, file_name, prefix_len);
          prefix[prefix_len] = '\0';
@@ -1053,7 +1067,7 @@ safer_name_suffix (char const *file_name, bool link_target)
                N_("Removing leading `%s' from member names"),
                N_("Removing leading `%s' from hard link targets")
              };
-             WARN ((0, 0, "%s", _(diagnostic[link_target]), prefix));
+             WARN ((0, 0, _(diagnostic[link_target]), prefix));
            }
        }
     }
@@ -1083,7 +1097,7 @@ safer_name_suffix (char const *file_name, bool link_target)
 size_t
 stripped_prefix_len (char const *file_name, size_t num)
 {
-  char const *p = file_name + FILESYSTEM_PREFIX_LEN (file_name);
+  char const *p = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
   while (ISSLASH (*p))
     p++;
   while (*p)
@@ -1105,7 +1119,7 @@ stripped_prefix_len (char const *file_name, size_t num)
 bool
 contains_dot_dot (char const *name)
 {
-  char const *p = name + FILESYSTEM_PREFIX_LEN (name);
+  char const *p = name + FILE_SYSTEM_PREFIX_LEN (name);
 
   for (;; p++)
     {
This page took 0.021994 seconds and 4 git commands to generate.