diff options
| author | Rob Pike <r@golang.org> | 2011-04-01 09:58:05 -0700 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2011-04-01 09:58:05 -0700 |
| commit | a78a25a16b5b56bdaa96ca7ce202bc1f20ab1bf1 (patch) | |
| tree | 0dd86aa9777dd5d2e4ea9947aada19d3af5cd9e2 /src/pkg/path/filepath | |
| parent | 731786439cd0c36a8eee721cc44ec26795609e00 (diff) | |
| download | go-a78a25a16b5b56bdaa96ca7ce202bc1f20ab1bf1.tar.xz | |
path/filepath.Glob: don't drop known matches on error.
Fixes #1610.
R=rsc
CC=golang-dev
https://golang.org/cl/4355042
Diffstat (limited to 'src/pkg/path/filepath')
| -rw-r--r-- | src/pkg/path/filepath/match.go | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/pkg/path/filepath/match.go b/src/pkg/path/filepath/match.go index ad4053fa24..d1ea82b06d 100644 --- a/src/pkg/path/filepath/match.go +++ b/src/pkg/path/filepath/match.go @@ -241,37 +241,40 @@ func Glob(pattern string) (matches []string) { } // glob searches for files matching pattern in the directory dir -// and appends them to matches. -func glob(dir, pattern string, matches []string) []string { +// and appends them to matches. If the directory cannot be +// opened, it returns the existing matches. New matches are +// added in lexicographical order. +func glob(dir, pattern string, matches []string) (m []string) { + m = matches fi, err := os.Stat(dir) if err != nil { - return nil + return } if !fi.IsDirectory() { - return matches + return } d, err := os.Open(dir, os.O_RDONLY, 0666) if err != nil { - return nil + return } defer d.Close() names, err := d.Readdirnames(-1) if err != nil { - return nil + return } sort.SortStrings(names) for _, n := range names { matched, err := Match(pattern, n) if err != nil { - return matches + break } if matched { - matches = append(matches, Join(dir, n)) + m = append(m, Join(dir, n)) } } - return matches + return } // hasMeta returns true if path contains any of the magic characters |
