commit 78681af6d1425e31a68f126aaf0ad7a15bc25e3d
parent 371a535dcb57966f91082e303d5ebb8a85570a97
Author: Matsuda Kenji <info@mtkn.jp>
Date: Wed, 15 Nov 2023 15:27:00 +0900
update semfs
Diffstat:
2 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/cmd/semfs/fs.go b/cmd/semfs/fs.go
@@ -39,39 +39,40 @@ func (fsys *semFS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, erro
}
}
-func (root *semFS) Stat() (fs.FileInfo, error) {
- t := uint32(time.Now().Unix())
- return &lib9p.FileInfo{Stat: lib9p.Stat{
- Qid: lib9p.Qid{Type: lib9p.QTDIR, Vers: 0, Path: 0},
- Mode: fs.ModeDir | 0777,
- Atime: t,
- Mtime: t,
- Length: 0,
- Name: ".",
- }}, nil
-}
-
-func (root *semFS) Close() error { return nil }
-func (root *semFS) Create(name string, uid string, mode lib9p.OpenMode, perm lib9p.FileMode) (lib9p.File, error) {
- for _, f := range root.semfiles {
+func (fsys *semFS) Create(name string, uid string, mode lib9p.OpenMode, perm lib9p.FileMode) (lib9p.File, error) {
+ for _, f := range fsys.semfiles {
if f.name == name {
return nil, errors.New("file already exists")
}
}
ctx, cancel := context.WithCancel(context.Background())
newfile := &semFile{
- fs: root,
+ fs: fsys,
name: name,
sem: 0,
- path: uint64(root.lastpath+1),
+ path: uint64(fsys.lastpath+1),
cancel: cancel,
}
newfile.start(ctx)
- root.semfiles[root.lastpath+1] = newfile
- root.lastpath++
+ fsys.semfiles[fsys.lastpath+1] = newfile
+ fsys.lastpath++
return newfile, nil
}
+func (root *semFS) Stat() (fs.FileInfo, error) {
+ t := uint32(time.Now().Unix())
+ return &lib9p.FileInfo{Stat: lib9p.Stat{
+ Qid: lib9p.Qid{Type: lib9p.QTDIR, Vers: 0, Path: 0},
+ Mode: fs.ModeDir | 0777,
+ Atime: t,
+ Mtime: t,
+ Length: 0,
+ Name: ".",
+ }}, nil
+}
+
+func (root *semFS) Close() error { return nil }
+
func (root *semFS) Read(p []byte) (n int, err error) {
return 0, errors.New("is a directory")
}
diff --git a/server.go b/server.go
@@ -533,6 +533,7 @@ func sCreate(ctx context.Context, s *Server, r *Req) {
}
Respond(ctx, r, nil)
}
+
func rCreate(r *Req, err error) {
if err != nil {
setError(r, err)