diff --git a/ChangeLog b/ChangeLog index b753a9d605..897a792cb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Feb 9 13:00:55 2004 Hirokazu Yamamoto + + * dir.c (fnmatch): + File.fnmatch('*?', 'a') should return true. [ruby-dev:22815] + File.fnmatch('\[1\]' , '[1]') should return true. [ruby-dev:22819] + Sun Feb 8 16:46:13 2004 Nobuyoshi Nakada * lib/pp.rb (PP::PPMethods::object_address_group): suppress negative diff --git a/dir.c b/dir.c index 07dd806ba7..071a5aa61d 100644 --- a/dir.c +++ b/dir.c @@ -178,7 +178,7 @@ fnmatch(pat, string, flags) test = downcase(test); pat--; while (*s) { - if ((c == '[' || downcase(*s) == test) && + if ((c == '?' || c == '[' || downcase(*s) == test) && !fnmatch(pat, s, flags | FNM_DOTMATCH)) return 0; else if (ISDIRSEP(*s)) @@ -186,7 +186,7 @@ fnmatch(pat, string, flags) s++; } return FNM_NOMATCH; - + case '[': if (!*s || ISDIRSEP(*s) || PERIOD(s)) return FNM_NOMATCH; @@ -199,7 +199,7 @@ fnmatch(pat, string, flags) case '\\': if (escape #if defined DOSISH - && *pat && strchr("*?[\\", *pat) + && *pat && strchr("*?[]\\", *pat) #endif ) { c = *pat;