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. */
{
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,
/* 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; )
{
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';
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));
}
}
}
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)
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++)
{