// glob searches for files matching pattern in the directory dir // 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(fs http.FileSystem, dir, pattern string, matches []string) (m []string, e error) { m = matches fi, err := vfsutil.Stat(fs, dir) if err != nil { return } if !fi.IsDir() { return } fis, err := vfsutil.ReadDir(fs, dir) if err != nil { return } sort.Sort(byName(fis)) for _, fi := range fis { n := fi.Name() matched, err := path.Match(path.Clean(pattern), n) if err != nil { return m, err } if matched { m = append(m, path.Join(dir, n)) } } return }
// readDirPaths reads the directory named by dirname and returns // a sorted list of directory paths. func readDirPaths(fs http.FileSystem, dirname string) ([]string, error) { fis, err := vfsutil.ReadDir(fs, dirname) if err != nil { return nil, err } paths := make([]string, len(fis)) for i := range fis { paths[i] = pathpkg.Join(dirname, fis[i].Name()) } sort.Strings(paths) return paths, nil }
func (v *godocFS) ReadDir(path string) ([]os.FileInfo, error) { return vfsutil.ReadDir(v.fs, path) }