func (fs *MultiZipFs) OpenDir(name string, context *fuse.Context) (stream []fuse.DirEntry, code fuse.Status) { fs.lock.RLock() defer fs.lock.RUnlock() stream = make([]fuse.DirEntry, 0, len(fs.zips)+2) if name == "" { var d fuse.DirEntry d.Name = "config" d.Mode = fuse.S_IFDIR | 0700 stream = append(stream, fuse.DirEntry(d)) } if name == "config" { for k := range fs.zips { var d fuse.DirEntry d.Name = k d.Mode = fuse.S_IFLNK stream = append(stream, fuse.DirEntry(d)) } } return stream, fuse.OK }
func (me *MultiZipFs) OpenDir(name string) (stream chan fuse.DirEntry, code fuse.Status) { me.lock.RLock() defer me.lock.RUnlock() // We don't use a goroutine, since we don't want to hold the // lock. stream = make(chan fuse.DirEntry, len(me.pendingZips)+len(me.zips)+2) submode := uint32(fuse.S_IFDIR | 0700) if name == "config" { submode = fuse.S_IFREG | 0600 } for k, _ := range me.zips { var d fuse.DirEntry d.Name = k d.Mode = submode stream <- fuse.DirEntry(d) } for k, _ := range me.pendingZips { var d fuse.DirEntry d.Name = k d.Mode = submode stream <- fuse.DirEntry(d) } if name == "" { var d fuse.DirEntry d.Name = "config" d.Mode = fuse.S_IFDIR | 0700 stream <- fuse.DirEntry(d) } close(stream) return stream, fuse.OK }
func (me *MultiZipFs) OpenDir(name string, context *fuse.Context) (stream chan fuse.DirEntry, code fuse.Status) { me.lock.RLock() defer me.lock.RUnlock() stream = make(chan fuse.DirEntry, len(me.zips)+2) if name == "" { var d fuse.DirEntry d.Name = "config" d.Mode = fuse.S_IFDIR | 0700 stream <- fuse.DirEntry(d) } if name == "config" { for k, _ := range me.zips { var d fuse.DirEntry d.Name = k d.Mode = fuse.S_IFLNK stream <- fuse.DirEntry(d) } } close(stream) return stream, fuse.OK }
func (me *DropboxFs) OpenDir(name string, context *fuse.Context) (c []fuse.DirEntry, code fuse.Status) { path := get_path(name) log.Printf("OpenDir: '%s'\n", name) data, err := Cache.Metadata.Get(path) entry := fuse.DirEntry{} if data.IsDir && err == nil { for _, path := range data.Contents { entry.Name = NameFromPath(path) c = append(c, entry) } return c, fuse.OK } return nil, fuse.ENOENT }