exclusion_tags = tag;
}
-static void
+void
exclusion_tag_warning (const char *dirname, const char *tagname,
const char *message)
{
message));
}
-static enum exclusion_tag_type
+enum exclusion_tag_type
check_exclusion_tags (char *dirname, const char **tag_file_name)
{
static char *tagname;
static size_t tagsize;
struct exclusion_tag *tag;
size_t dlen = strlen (dirname);
+ int addslash = dirname[dlen-1] != '/';
char *nptr = NULL;
- char *ret = NULL;
for (tag = exclusion_tags; tag; tag = tag->next)
{
- size_t size = dlen + tag->length + 1;
+ size_t size = dlen + addslash + tag->length + 1;
if (size > tagsize)
{
tagsize = size;
{
strcpy (tagname, dirname);
nptr = tagname + dlen;
+ if (addslash)
+ *nptr++ = '/';
}
strcpy (nptr, tag->name);
if (access (tagname, F_OK) == 0
return dump_status_short;
}
size_left -= count;
- if (count)
- set_next_block_after (blk + (bufsize - 1) / BLOCKSIZE);
+ set_next_block_after (blk + (bufsize - 1) / BLOCKSIZE);
if (count != bufsize)
{
STRINGIFY_BIGINT (size_left, buf)));
if (! ignore_failed_read_option)
exit_status = TAREXIT_DIFFERS;
- pad_archive (size_left - (bufsize-count));
+ pad_archive (size_left - (bufsize - count));
return dump_status_short;
}
}
switch (check_exclusion_tags (st->orig_file_name, &tag_file_name))
{
- case exclusion_tag_none:
case exclusion_tag_all:
+ /* Handled in dump_file0 */
+ break;
+
+ case exclusion_tag_none:
{
char const *entry;
size_t entry_len;