lib9p

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

commit fcb611ba345d811aa159e82ff27e780f03af9066
parent 636881b7983578057ccfead299d54e4debbd6cef
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon,  6 Nov 2023 07:57:03 +0900

delete log message

Diffstat:
Mdiskfs/file.go | 17+++++++++++++++--
Mserver.go | 2--
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