lib9p

Go 9P library.
Log | Files | Refs

commit deb949a348d45d78b272cde3befb84ddaaa6afe1
parent 167da5aa0f2333ae79765c024d7415d689045408
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 24 Sep 2023 08:02:14 +0900

update numfs

Diffstat:
Mcmd/numfs.go | 47++++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/cmd/numfs.go b/cmd/numfs.go @@ -5,11 +5,9 @@ import ( "flag" "fmt" "io" - "io/fs" "log" "net" "os" - "strconv" "lib9p" ) @@ -33,27 +31,8 @@ func init() { type numFS struct{} -func (fsys *numFS) Open(name string) (lib9p.File, error) { - switch name { - case ".": - return root, nil - case "0", "1", "2", "3": - d, err := strconv.Atoi(name) - if err != nil { - return nil, &fs.PathError{ - Op: "open", - Path: name, - Err: fmt.Errorf("invalid number %s", name), - } - } - return root.children[d], nil - default: - return nil, &fs.PathError{ - Op: "open", - Path: name, - Err: fmt.Errorf("not found"), - } - } +func (fsys *numFS) Root() lib9p.File { + return root } type numFile struct { @@ -104,6 +83,24 @@ func (f *numFile) Stat() (*lib9p.FileInfo, error) { return &lib9p.FileInfo{stat}, nil } +func (f *numFile) Qid() lib9p.Qid { + var qid lib9p.Qid + if f.id == -1 { + qid = lib9p.Qid{ + Type: lib9p.QTDIR, + Vers: 0, + Path: ^uint64(0), + } + } else { + qid = lib9p.Qid{ + Type: lib9p.QTFILE, + Vers: 0, + Path: uint64(f.id), + } + } + return qid +} + func (f *numFile) Read(p []byte) (int, error) { if f.id == -1 { return 0, fmt.Errorf("is a directory") @@ -118,6 +115,10 @@ func (f *numFile) ReadAt(p []byte, off int64) (n int, err error) { return f.reader.ReadAt(p, off) } +func (f *numFile) Open(mode lib9p.OpenMode) error { + return nil +} + func (f *numFile) Close() error { f.reader.Seek(0, io.SeekStart) return nil