commit deb949a348d45d78b272cde3befb84ddaaa6afe1
parent 167da5aa0f2333ae79765c024d7415d689045408
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sun, 24 Sep 2023 08:02:14 +0900
update numfs
Diffstat:
| M | cmd/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