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