本文整理汇总了Golang中github.com/hanwen/go-fuse/fuse.DirEntry类的典型用法代码示例。如果您正苦于以下问题:Golang DirEntry类的具体用法?Golang DirEntry怎么用?Golang DirEntry使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DirEntry类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: OpenDir
func (gf *GistFs) OpenDir(n string, c *fuse.Context) ([]fuse.DirEntry, fuse.Status) {
dirs := make([]fuse.DirEntry, 0)
if gf.files != nil && n == "" {
for _, f := range gf.files {
d := fuse.DirEntry{Name: f.Name, Mode: fuse.S_IFREG | 0440}
if f.isDir {
d.Mode = fuse.S_IFDIR | 0550
}
dirs = append(dirs, d)
}
return dirs, fuse.OK
}
gf.files = make(map[string]File)
u := gf.user
if n != "" {
u = n
}
gists, err := getGists(u)
if err != nil {
log.Println(err)
return nil, fuse.ENOENT
}
for _, g := range gists {
for _, f := range g.Files {
gf.files[n+f.Name] = f
dirs = append(dirs, fuse.DirEntry{Name: f.Name, Mode: fuse.S_IFREG | 0440})
}
}
return dirs, fuse.OK
}
开发者ID:andrewstuart,项目名称:gistfs,代码行数:34,代码来源:main.go
示例2: OpenDir
func (fs *loopbackFileSystem) OpenDir(name string, context *fuse.Context) (stream []fuse.DirEntry, status fuse.Status) {
// What other ways beyond O_RDONLY are there to open
// directories?
f, err := os.Open(fs.GetPath(name))
if err != nil {
return nil, fuse.ToStatus(err)
}
want := 500
output := make([]fuse.DirEntry, 0, want)
for {
infos, err := f.Readdir(want)
for i := range infos {
n := infos[i].Name()
d := fuse.DirEntry{
Name: n,
}
if s := fuse.ToStatT(infos[i]); s != nil {
d.Mode = uint32(s.Mode)
} else {
log.Printf("ReadDir entry %q for %q has no stat info", n, name)
}
output = append(output, d)
}
if len(infos) < want || err == io.EOF {
break
}
if err != nil {
log.Println("Readdir() returned err:", err)
break
}
}
f.Close()
return output, fuse.OK
}
开发者ID:pkern,项目名称:go-fuse,代码行数:35,代码来源:loopback.go
示例3: OpenDir
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
}
开发者ID:sgodbold,项目名称:dropbox-mnt-go,代码行数:16,代码来源:fs.go
示例4: OpenDir
func (fs *KakigooriFileSystem) OpenDir(name string, context *fuse.Context) (stream []fuse.DirEntry, status fuse.Status) {
fullPath := fs.GetPath(name)
f, err := os.Open(fullPath)
if err != nil {
return nil, fuse.ToStatus(err)
}
want := 500
output := make([]fuse.DirEntry, 0, want)
for {
infos, err := f.Readdir(want)
for i := range infos {
// workaround for https://code.google.com/p/go/issues/detail?id=5960
if infos[i] == nil {
continue
}
n := infos[i].Name()
d := fuse.DirEntry{
Name: n,
}
if s := fuse.ToStatT(infos[i]); s != nil {
d.Mode = uint32(s.Mode)
} else {
log.Printf("ReadDir entry %q for %q has no stat info", n, name)
}
output = append(output, d)
}
if len(infos) < want || err == io.EOF {
break
}
if err != nil {
log.Println("Readdir() returned err:", err)
break
}
}
f.Close()
go event.Notify(event.OpenDir, fullPath)
return output, fuse.OK
}
开发者ID:rizki96,项目名称:kakigoori,代码行数:38,代码来源:kakigoori.go
示例5: OpenDir
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
}
开发者ID:machinaut,项目名称:go-fuse,代码行数:37,代码来源:multizip.go
示例6: OpenDir
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
}
开发者ID:hoffoo,项目名称:go-fuse,代码行数:23,代码来源:multizip.go
示例7: OpenDir
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
}
开发者ID:crazy2be,项目名称:go-fuse,代码行数:24,代码来源:multizip.go
注:本文中的github.com/hanwen/go-fuse/fuse.DirEntry类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论