commit 351b2e1570a66ae90ef2d2ce7c38e3818977a708
parent d2aa4fb4166d03b4af501304bcfce54bf32727fd
Author: Matsuda Kenji <info@mtkn.jp>
Date: Mon, 11 Sep 2023 07:54:20 +0900
wip
Diffstat:
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