lib9p

Go 9P library.
Log | Files | Refs

commit 4e7a750c0706beff489848216ad32c9fc16f6fe3
parent 7d937ac1f9a78b13cfd84ebdd3a26d8024b77b10
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 10 Sep 2023 07:52:31 +0900

update numfs

Diffstat:
Mcmd/numfs.go | 37++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/cmd/numfs.go b/cmd/numfs.go @@ -1,7 +1,6 @@ package main import ( - "bytes" "flag" "fmt" "io/fs" @@ -16,14 +15,16 @@ import ( var root *numFile func init() { + fsys := new(numFS) root = &numFile{ + fs: fsys, id: -1, text: "", children: []*numFile{ - &numFile{0, "0", nil}, - &numFile{1, "1", nil}, - &numFile{2, "2", nil}, - &numFile{3, "3", nil}, + &numFile{fsys, 0, "0", nil}, + &numFile{fsys, 1, "1", nil}, + &numFile{fsys, 2, "2", nil}, + &numFile{fsys, 3, "3", nil}, }, } } @@ -54,12 +55,15 @@ func (fsys *numFS) Open(name string) (lib9p.File, error) { } type numFile struct { + fs *numFS id int text string children []*numFile } -func (f *numFile) Stat() (fs.FileInfo, error) { +func (f *numFile) Fsys() lib9p.FS { return f.fs } + +func (f *numFile) Stat() (*lib9p.FileInfo, error) { var stat lib9p.Stat stat.Type = 0 stat.Dev = 0 @@ -117,26 +121,17 @@ func (f *numFile) PathName() string { return f.text } -func (f *numFile) ReadAt(p []byte, off int64) (n int, err error) { - return bytes.NewReader([]byte(f.text)).ReadAt(p, off) -} +func (f *numFile) Parent() (lib9p.File, error) { return root, nil } -func (f *numFile) ReadDir(n int) ([]*lib9p.DirEntry, error) { +func (f *numFile) Child() ([]lib9p.File, error) { if f.id != -1 { return nil, fmt.Errorf("not a directory") } - if n < 0 { - n = len(root.children) - } - de := make([]*lib9p.DirEntry, n) - for i := 0; i < len(root.children) && i < n; i++ { - stat, err := root.children[i].Stat() - if err != nil { - return de, err - } - de[i] = &lib9p.DirEntry{stat.(*lib9p.FileInfo).Stat} + children := make([]lib9p.File, len(f.children)) + for i, c := range f.children { + children[i] = c } - return de, nil + return children, nil } var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.")