From 685a950d7a5dcd77afc54fb97a3061d141861fe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= <hugo@lysator.liu.se> Date: Thu, 29 Oct 2020 20:48:50 +0100 Subject: [PATCH] Fix. --- main.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 1a08eb5..dd82082 100644 --- a/main.go +++ b/main.go @@ -198,7 +198,7 @@ type FS struct{ } func (fs FS) Root() (fs.Node, error) { - return Dir{ /*fs.data*/ }, nil + return Dir{ "" /*fs.data*/ }, nil } func (FS) GenerateInode(parentInode uint64, name string) uint64 { @@ -207,21 +207,33 @@ func (FS) GenerateInode(parentInode uint64, name string) uint64 { for _, c := range []byte(name) { sum += uint64(c) } - log.Printf("Generating inode for %v (inode = %v)", - name, sum) + log.Printf("Generating inode for %v (inode = %v, parent = %v)", + name, sum, parentInode) return sum } +/* dir hashable? */ +/* TODO does two Dir object with same value hash become the same +* object? */ type Dir struct{ // data []ResultRecord + name string } func (Dir) Attr(ctx context.Context, a *fuse.Attr) error { - a.Inode = 1 + // log.Print("Stat dir") + a.Inode = 0 a.Mode = os.ModeDir | 0o555 return nil } func (d Dir) Lookup(ctx context.Context, name string) (fs.Node, error) { + + log.Printf("Lookup '%v' in '%v'", name, d.name) + + if name == "hosts" { + return Dir{ d.name + "/" + name }, nil + } + for _, item := range data { if item.Name == name { log.Printf("Found %v", name) @@ -238,9 +250,12 @@ type File struct { func (d Dir) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) { var dirents []fuse.Dirent + dirents = append(dirents, fuse.Dirent{Inode: 0, Name: "hosts", Type: fuse.DT_Dir}) + /* for _, item := range data { dirents = append(dirents, fuse.Dirent{Inode: 0, Name: item.Name, Type: fuse.DT_File}) } + */ return dirents, nil } -- GitLab