commit fcb611ba345d811aa159e82ff27e780f03af9066
parent 636881b7983578057ccfead299d54e4debbd6cef
Author: Matsuda Kenji <info@mtkn.jp>
Date: Mon, 6 Nov 2023 07:57:03 +0900
delete log message
Diffstat:
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/diskfs/file.go b/diskfs/file.go
@@ -3,6 +3,7 @@ package diskfs
import (
"fmt"
"io/fs"
+ "log"
"os"
"os/user"
"path/filepath"
@@ -32,7 +33,7 @@ func (f *File) WStat(s *lib9p.Stat) error {
// Create creates file named name in the directory f, and returns the
// newly created file.
func (f *File) Create(name string, uid string,
- mode lib9p.OpenMode, perm lib9p.FileMode) (lib9p.File, error) {
+ mode lib9p.OpenMode, perm lib9p.FileMode) (file lib9p.File, err error) {
dirinfo, err := f.Stat()
if err != nil {
return nil, fmt.Errorf("stat: %v", err)
@@ -52,6 +53,13 @@ func (f *File) Create(name string, uid string,
}
osfile.Close()
}
+ defer func() {
+ if err != nil {
+ if e := os.Remove(ospath); e != nil {
+ log.Printf("remove intermediate file: %v", e)
+ }
+ }
+ }()
usr, err := user.Lookup(uid)
if err != nil {
return nil, fmt.Errorf("lookup user: %v", err)
@@ -74,10 +82,15 @@ func (f *File) Create(name string, uid string,
if err := os.Chmod(ospath, perm); err != nil {
return nil, fmt.Errorf("set file mode: %v", err)
}
- file, err := f.fs.OpenFile(filepath.Join(f.path, name), mode, 0)
+ file, err = f.fs.OpenFile(filepath.Join(f.path, name), mode, 0)
if err != nil {
return nil, fmt.Errorf("open new file: %v", err)
}
+ defer func() {
+ if err != nil {
+ file.Close()
+ }
+ }()
return file, nil
}
diff --git a/server.go b/server.go
@@ -358,12 +358,10 @@ func sWalk(ctx context.Context, s *Server, r *Req) {
cwdp = path.Join(cwdp, name)
cwdf, err = s.fs.OpenFile(cwdp, OREAD, 0)
if err != nil {
- log.Printf("open: %v", err)
break
}
stat, err := cwdf.Stat()
if err != nil {
- log.Printf("stat: %v", err)
break
}
wqids[i] = stat.Sys().(*Stat).Qid