func readDir(fs pathfs.FileSystem, name string) *dirResponse { origStream, code := fs.OpenDir(name, nil) r := &dirResponse{nil, code} if !code.Ok() { return r } r.entries = origStream return r }
func findDir(fs pathfs.FileSystem, path string, delimiter string) []string { ents, _ := fs.OpenDir(path, nil) ret := make([]string, 0) for _, ent := range ents { child := path + delimiter + ent.Name attr, _ := fs.GetAttr(child, nil) if attr.Mode&fuse.S_IFDIR != 0 { ret = append(ret, child+"/") ret = append(ret, findDir(fs, child, "/")...) } else { ret = append(ret, child) } } return ret }
func (s *fuseTestSuite) TestDirError() { datasetName := "TestDirError" str := spec.CreateValueSpecString("ldb", s.LdbDir, datasetName) var testfs pathfs.FileSystem start(str, func(fs pathfs.FileSystem) { testfs = fs }) code := testfs.Mkdir("foo/bar", 0755, nil) assert.Equal(s.T(), fuse.ENOENT, code) _, code = testfs.Create("foo", uint32(os.O_CREATE)|uint32(os.O_WRONLY), 0644, nil) assert.Equal(s.T(), fuse.OK, code) code = testfs.Mkdir("foo/bar", 0755, nil) assert.Equal(s.T(), fuse.ENOTDIR, code) _, code = testfs.OpenDir("foo", nil) assert.Equal(s.T(), fuse.ENOTDIR, code) }
// newDirnameMap reads the contents of the given directory. On error, // returns a nil map. This forces reloads in the dirCache until we // succeed. func newDirnameMap(fs pathfs.FileSystem, dir string) map[string]bool { stream, code := fs.OpenDir(dir, nil) if code == fuse.ENOENT { // The directory not existing is not an error. return map[string]bool{} } if !code.Ok() { return nil } result := make(map[string]bool) for _, e := range stream { if e.Mode&fuse.S_IFREG != 0 { result[e.Name] = true } } return result }