X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=f54e346f777c4828002ac6e24a103d50415312b1;hb=b0d5935cb0bf058cd2fc286a48cfd6b6a1c098bf;hp=35022364ae436eae4cee5af94ba0ef21eadb885b;hpb=a1b1b7cc8aa3e3787834dccc96b516f467225b7b;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 3502236..f54e346 100644 --- a/src/create.c +++ b/src/create.c @@ -58,7 +58,7 @@ add_exclusion_tag (const char *name, enum exclusion_tag_type type, exclusion_tags = tag; } -static void +void exclusion_tag_warning (const char *dirname, const char *tagname, const char *message) { @@ -70,18 +70,19 @@ exclusion_tag_warning (const char *dirname, const char *tagname, 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; 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; @@ -92,6 +93,8 @@ check_exclusion_tags (char *dirname, const char **tag_file_name) { strcpy (tagname, dirname); nptr = tagname + dlen; + if (addslash) + *nptr++ = '/'; } strcpy (nptr, tag->name); if (access (tagname, F_OK) == 0 @@ -1182,8 +1185,11 @@ dump_dir0 (char *directory, 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;