From b0d5935cb0bf058cd2fc286a48cfd6b6a1c098bf Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Wed, 26 Sep 2007 22:07:44 +0000 Subject: [PATCH] (exclusion_tag_warning, check_exclusion_tags): Remove static qualifier. (check_exclusion_tags): account for dirname without terminating slash. (dump_dir0): exclusion_tag_all is handled elsewhere. --- src/create.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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; -- 2.44.0