lib9p

Go 9P library.
Log | Files | Refs | LICENSE

commit 732164d42f8543c953f14582ea8329157475342c
parent 78681af6d1425e31a68f126aaf0ad7a15bc25e3d
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 15 Nov 2023 16:48:13 +0900

add RemoverFS

Diffstat:
Mfs.go | 5+++++
Mserver.go | 8+++++---
2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/fs.go b/fs.go @@ -20,6 +20,11 @@ type CreaterFS interface { Create(name string, uid string, mode OpenMode, perm FileMode) (File, error) } +type RemoverFS interface { + FS + Remove(name string) error +} + // getChildren returns the child files in the directory specified by dirpath. func getChildren(fsys FS, dirpath string) ([]File, error) { dir0, err := fsys.OpenFile(dirpath, OREAD) diff --git a/server.go b/server.go @@ -747,17 +747,19 @@ func sRemove(ctx context.Context, s *Server, r *Req) { Respond(ctx, r, fmt.Errorf("open parent: %v", err)) return } - defer parent.Close() if !hasPerm(parent, r.Fid.Uid, AWRITE) { Respond(ctx, r, ErrPerm) return } - rfile, ok := r.Fid.File.(RemoverFile) + parent.Close() + //rfile, ok := r.Fid.File.(RemoverFile) + rfs, ok := s.fs.(RemoverFS) if !ok { Respond(ctx, r, ErrOperation) return } - if err := rfile.Remove(); err != nil { + //if err := rfile.Remove(); err != nil { + if err := rfs.Remove(r.Fid.path); err != nil { Respond(ctx, r, fmt.Errorf("remove: %v", err)) return }