diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-02-07 00:02:08 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-02-07 00:04:50 -0800 |
commit | cf94ccda356cc732a883f16342440330d3f644ec (patch) | |
tree | 0cd15fe01a50aded4e68ce762909f419902b1cb1 /attr.c | |
parent | a0cf49c16ae37177dcfcefa1149bf09f84721cf5 (diff) | |
download | git-cf94ccda356cc732a883f16342440330d3f644ec.tar.gz |
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.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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) |