lib9p

Go 9P library.
Log | Files | Refs

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:
Mserver.go | 13+++++++++++--
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()