From cf94ccda356cc732a883f16342440330d3f644ec Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Feb 2008 00:02:08 -0800 Subject: 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 --- attr.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'attr.c') diff --git a/attr.c b/attr.c index 741db3b468..64b77b1663 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) -- cgit v1.2.3