Skip to content

Commit

Permalink
io/fs: backslash is always a glob meta character
Browse files Browse the repository at this point in the history
Fixes #44171

Change-Id: I2d3437a2f5b9fa0358e4664e1a8eacebed975eed
Reviewed-on: https://go-review.googlesource.com/c/go/+/290512
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
  • Loading branch information
ianlancetaylor committed Feb 9, 2021
1 parent dc725bf commit cea4e21
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
5 changes: 2 additions & 3 deletions src/io/fs/glob.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package fs

import (
"path"
"runtime"
)

// A GlobFS is a file system with a Glob method.
Expand Down Expand Up @@ -111,8 +110,8 @@ func glob(fs FS, dir, pattern string, matches []string) (m []string, e error) {
// recognized by path.Match.
func hasMeta(path string) bool {
for i := 0; i < len(path); i++ {
c := path[i]
if c == '*' || c == '?' || c == '[' || runtime.GOOS == "windows" && c == '\\' {
switch path[i] {
case '*', '?', '[', '\\':
return true
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/io/fs/glob_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ var globTests = []struct {
}{
{os.DirFS("."), "glob.go", "glob.go"},
{os.DirFS("."), "gl?b.go", "glob.go"},
{os.DirFS("."), `gl\ob.go`, "glob.go"},
{os.DirFS("."), "*", "glob.go"},
{os.DirFS(".."), "*/glob.go", "fs/glob.go"},
}
Expand All @@ -32,7 +33,7 @@ func TestGlob(t *testing.T) {
t.Errorf("Glob(%#q) = %#v want %v", tt.pattern, matches, tt.result)
}
}
for _, pattern := range []string{"no_match", "../*/no_match"} {
for _, pattern := range []string{"no_match", "../*/no_match", `\*`} {
matches, err := Glob(os.DirFS("."), pattern)
if err != nil {
t.Errorf("Glob error for %q: %s", pattern, err)
Expand Down

0 comments on commit cea4e21

Please sign in to comment.