aboutsummaryrefslogtreecommitdiff
path: root/attr.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-02-07 00:02:08 -0800
committerJunio C Hamano <gitster@pobox.com>2008-02-07 00:04:50 -0800
commitcf94ccda356cc732a883f16342440330d3f644ec (patch)
tree0cd15fe01a50aded4e68ce762909f419902b1cb1 /attr.c
parenta0cf49c16ae37177dcfcefa1149bf09f84721cf5 (diff)
downloadgit-cf94ccda356cc732a883f16342440330d3f644ec.tar.gz
git-cf94ccda356cc732a883f16342440330d3f644ec.tar.xz
gitattributes: fix relative path matching
There was an embarrassing pair of off-by-one miscounting that failed to match path "a/b/c" when "a/.gitattributes" tried to name it with relative path "b/c". This fixes it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'attr.c')
-rw-r--r--attr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/attr.c b/attr.c
index 741db3b46..64b77b166 100644
--- a/attr.c
+++ b/attr.c
@@ -406,7 +406,7 @@ static void debug_info(const char *what, struct attr_stack *elem)
{
fprintf(stderr, "%s: %s\n", what, elem->origin ? elem->origin : "()");
}
-static void debug_set(const char *what, const char *match, struct git_attr *attr, void *v)
+static void debug_set(const char *what, const char *match, struct git_attr *attr, const void *v)
{
const char *value = v;
@@ -543,10 +543,10 @@ static int path_matches(const char *pathname, int pathlen,
if (*pattern == '/')
pattern++;
if (pathlen < baselen ||
- (baselen && pathname[baselen - 1] != '/') ||
+ (baselen && pathname[baselen] != '/') ||
strncmp(pathname, base, baselen))
return 0;
- return fnmatch(pattern, pathname + baselen, FNM_PATHNAME) == 0;
+ return fnmatch(pattern, pathname + baselen + 1, FNM_PATHNAME) == 0;
}
static int fill_one(const char *what, struct match_attr *a, int rem)