lib9p

Go 9P library.
Log | Files | Refs

commit 351b2e1570a66ae90ef2d2ce7c38e3818977a708
parent d2aa4fb4166d03b4af501304bcfce54bf32727fd
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 11 Sep 2023 07:54:20 +0900

wip

Diffstat:
Mserver.go | 26++++++++++++++++++++++++++
Mtestdir/a | 1+
2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/server.go b/server.go @@ -311,6 +311,8 @@ func sRead(s *Server, r *Req) { if err != nil { log.Printf("get children: %v", err) } + + // BUG: TODO: fix offset. for k := int(ifcall.Offset()); k < len(children); k++ { fi, err := children[k].Stat() if err != nil { @@ -350,6 +352,26 @@ func sRead(s *Server, r *Req) { } func rRead(r *Req, err error) {} +func sWrite(s *Server, r *Req) { + ifcall := r.ifcall.(*TWrite) + fid, ok := s.fPool.lookup(ifcall.Fid()) + if !ok { + respond(r, fmt.Errorf("unknown fid")) + return + } + file := fid.File + + if ok, err := hasPerm(file, fid.Uid, 0444); !ok || err != nil { + fi, _ := file.Stat() + stat := fi.Sys().(*Stat) + log.Printf("uid: %s, %s\n", stat.Uid, fid.Uid) + log.Printf("perm: %o\n", fi.Mode().Perm()) + } + respond(r, fmt.Errorf("wip")) +} + +func rWrite(r *Req, err error) {} + func sClunk(s *Server, r *Req) { ifcall := r.ifcall.(*TClunk) _, ok := s.fPool.lookup(ifcall.Fid()) @@ -430,6 +452,8 @@ func (s *Server) Serve() { sOpen(s, r) case *TRead: sRead(s, r) + case *TWrite: + sWrite(s, r) case *TClunk: sClunk(s, r) case *TStat: @@ -467,6 +491,8 @@ func respond(r *Req, err error) { rOpen(r, err) case *RRead: rRead(r, err) + case *RWrite: + rWrite(r, err) case *RClunk: rClunk(r, err) case *RStat: diff --git a/testdir/a b/testdir/a @@ -9998,3 +9998,4 @@ 9998 9999 10000 +a