commit e66aa07c98dca5ad6e414010ef3e1f469e30c300
parent 336aea64a494009030a0fd023d7ce109526c9c84
Author: Matsuda Kenji <info@mtkn.jp>
Date: Thu, 14 Sep 2023 08:45:41 +0900
fix bug.
fid of Tcreate should point to the newly created file
Diffstat:
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/server.go b/server.go
@@ -300,7 +300,7 @@ func sCreate(s *Server, r *Req) {
return
}
if !dirstat.IsDir() {
- respond(r, fmt.Errorf("create on non-dir"))
+ respond(r, fmt.Errorf("create in non-dir"))
return
}
if !hasPerm(dir, fid.Uid, AWRITE) {
@@ -327,12 +327,21 @@ func sCreate(s *Server, r *Req) {
respond(r, fmt.Errorf("create: %v", err))
return
}
-
+ /* TODO: reference count.
+ if err := fid.File.Close(); err != nil {
+ respond(r, fmt.Errorf("close: %v", err))
+ return
+ }
+ */
fi, err := file.Stat()
if err != nil {
respond(r, fmt.Errorf("stat: %v", err))
return
}
+ fid.File = file
+ fid.Qid = fi.Qid()
+ fid.OMode = ifcall.Mode()
+
ofcall := new(RCreate)
ofcall.tag = ifcall.Tag()
ofcall.qid = fi.Qid()