lib9p

Go 9P library.
Log | Files | Refs

commit 690bdde4925c521b13a63c98f1c2130af8c71324
parent 42c5456c307858ab7a7a6693cfe41764a9d9006a
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Fri,  8 Sep 2023 14:35:05 +0900

update server.go

Diffstat:
Mfile.go | 4+++-
Mserver.go | 15++++++++++-----
2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/file.go b/file.go @@ -14,8 +14,9 @@ type File interface { Parent() (File, error) Child() ([]File, error) } - +/* type ReadDirFile interface { File ReadDir(int) ([]*DirEntry, error) } +*/ +\ No newline at end of file diff --git a/server.go b/server.go @@ -307,13 +307,18 @@ func sRead(s *Server, r *Req) { return } if fi.IsDir() { - de, err := fid.File.(ReadDirFile).ReadDir(-1) + children, err := fid.File.Child() if err != nil { - log.Printf("read dir: %v", err) + log.Printf("get children: %v", err) } - for k := int(ifcall.Offset()); k < len(de); k++ { - e := de[k] - st := e.Sys().(*Stat) + for k := int(ifcall.Offset()); k < len(children); k++ { + fi, err := children[k].Stat() + if err != nil { + log.Printf("stat: %v", err) + respond(r, fmt.Errorf("internal error")) + return + } + st := fi.Sys().(*Stat) buf := st.marshal() if n+len(buf) > len(data) { break