commit 732164d42f8543c953f14582ea8329157475342c
parent 78681af6d1425e31a68f126aaf0ad7a15bc25e3d
Author: Matsuda Kenji <info@mtkn.jp>
Date: Wed, 15 Nov 2023 16:48:13 +0900
add RemoverFS
Diffstat:
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
}