path: root/dir.c
diff options
authorFinn Arne Gangstad <>2009-02-10 14:20:17 (GMT)
committerJunio C Hamano <>2009-02-12 19:36:43 (GMT)
commitdd482eeac2524627beee323438dd1fdf34b4f97e (patch)
treeddc936c8d1b3c27c021163c420ec28693eb61455 /dir.c
parentab2fdb3b62589477bde0cd0af8239bee510c3488 (diff)
Support "\" in non-wildcard exclusion entries
"\" was treated differently in exclude rules depending on whether a wildcard match was done. For wildcard rules, "\" was de-escaped in fnmatch, but this was not done for other rules since they used strcmp instead. A file named "#foo" would not be excluded by "\#foo", but would be excluded by "\#foo*". We now treat all rules with "\" as wildcard rules. Another solution could be to de-escape all non-wildcard rules as we read them, but we would have to do the de-escaping exactly as fnmatch does it to avoid inconsistencies. Signed-off-by: Finn Arne Gangstad <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'dir.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/dir.c b/dir.c
index cfaa28f..04a4b98 100644
--- a/dir.c
+++ b/dir.c
@@ -139,7 +139,7 @@ int match_pathspec(const char **pathspec, const char *name, int namelen, int pre
static int no_wildcard(const char *string)
- return string[strcspn(string, "*?[{")] == '\0';
+ return string[strcspn(string, "*?[{\\")] == '\0';
void add_exclude(const char *string, const char *base,