lib9p

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

commit c967acce6fb580505f5946bb0617bb239860251d
parent 99810d5d273c3c66513811851251c77dff7f50a1
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 15 Nov 2023 09:11:22 +0900

change signature of FS.OpenFile

Diffstat:
Mclient/client_test.go | 2+-
Mclient/fs.go | 9++++++---
Mcmd/numfs/main.go | 2+-
Mcmd/semfs/fs.go | 2+-
Mdiskfs/file.go | 2+-
Mdiskfs/fs.go | 7++-----
Mexport_fs.go | 2+-
Mfs.go | 7+++----
Miofs/fs.go | 2+-
Mserver.go | 14+++++++-------
Mtestfs/fs.go | 2+-
11 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/client/client_test.go b/client/client_test.go @@ -155,7 +155,7 @@ func TestClient2(t *testing.T) { t.Errorf("mount: %v", err) } - a0, err := fs.OpenFile("a", lib9p.OREAD, 0) + a0, err := fs.OpenFile("a", lib9p.OREAD) if err != nil { t.Errorf("open: %v", err) } diff --git a/client/fs.go b/client/fs.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "io" - "io/fs" +// "io/fs" "path" "strings" @@ -19,18 +19,20 @@ type ClientFS struct { // Open opens the file named name in fsys. func (fsys *ClientFS) Open(name string) (lib9p.File, error) { - return fsys.OpenFile(name, lib9p.OREAD, 0) + return fsys.OpenFile(name, lib9p.OREAD) } // OpenFile opens the file named name in fsys with omode. // If the file does not exist, it create it with perm. -func (fsys *ClientFS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fsys *ClientFS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, error) { var ( qid lib9p.Qid iounit uint32 ) f, err := fsys.walkFile(name) if err != nil { + return nil, err + /* // File not found. Create. f, err = fsys.walkFile(path.Dir(name)) if err != nil { @@ -46,6 +48,7 @@ func (fsys *ClientFS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMo f.Close() return nil, fmt.Errorf("create: %v", err) } + */ } else { // File exists. Open it. tag, err := fsys.tPool.add() diff --git a/cmd/numfs/main.go b/cmd/numfs/main.go @@ -38,7 +38,7 @@ func fsysString(f *numFile) string { return s } -func (fsys *numFS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fsys *numFS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, error) { if name == "." || name == "" { return fsys.root, nil } diff --git a/cmd/semfs/fs.go b/cmd/semfs/fs.go @@ -18,7 +18,7 @@ type semFS struct { lastpath int } -func (fsys *semFS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fsys *semFS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, error) { wnames := strings.Split(name, "/") if len(wnames) != 1 { return nil, errors.New("not found") diff --git a/diskfs/file.go b/diskfs/file.go @@ -64,7 +64,7 @@ func (f *File) Create(name string, uid string, if err := os.Chmod(ospath, perm); err != nil { return nil, fmt.Errorf("chmod: %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) if err != nil { return nil, fmt.Errorf("open new file: %v", err) } diff --git a/diskfs/fs.go b/diskfs/fs.go @@ -4,7 +4,6 @@ package diskfs import ( "fmt" - "io/fs" "os" "path/filepath" @@ -38,9 +37,7 @@ func Open(name string) (*FS, error) { } // OpenFile opens the named file with specified omode by calling os.OpenFile. -// This signature is derived from os.OpenFile(), but creating the specified file -// is not implemented yet and therefore, perm is not used. -func (fsys *FS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fsys *FS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, error) { fp := filepath.Join(fsys.rootPath, name) var m int switch omode & 3 { @@ -57,7 +54,7 @@ func (fsys *FS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (l if omode&lib9p.ORCLOSE != 0 { return nil, fmt.Errorf("orclose not implemented") } - osf, err := os.OpenFile(fp, m, perm) + osf, err := os.OpenFile(fp, m, 0) if err != nil { return nil, err } diff --git a/export_fs.go b/export_fs.go @@ -10,5 +10,5 @@ type ExportFS struct { } func (fsys ExportFS) Open(name string) (fs.File, error) { - return fsys.OpenFile(name, OREAD, 0) + return fsys.OpenFile(name, OREAD) } \ No newline at end of file diff --git a/fs.go b/fs.go @@ -9,13 +9,12 @@ import ( // FS is an file system to be exported by 9P server. type FS interface { // OpenFile opens file named name with omode. - // If the file does not exists, it creates it with FileMode perm. - OpenFile(name string, omode OpenMode, perm fs.FileMode) (File, error) + OpenFile(name string, omode OpenMode) (File, 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, 0) + dir0, err := fsys.OpenFile(dirpath, OREAD) if err != nil { return nil, fmt.Errorf("open dir: %v", err) } @@ -30,7 +29,7 @@ func getChildren(fsys FS, dirpath string) ([]File, error) { } children := make([]File, len(des)) for i, de := range des { - f, err := fsys.OpenFile(path.Join(dirpath, de.Name()), OREAD, 0) + f, err := fsys.OpenFile(path.Join(dirpath, de.Name()), OREAD) if err != nil { for j := 0; j < i; j++ { children[j].Close() diff --git a/iofs/fs.go b/iofs/fs.go @@ -24,7 +24,7 @@ func NewFS(fsys fs.FS) *FS { return fs } -func (fsys *FS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fsys *FS) OpenFile(name string, omode lib9p.OpenMode) (lib9p.File, error) { if omode != lib9p.OREAD { return nil, errors.New("read only file system") } diff --git a/server.go b/server.go @@ -278,7 +278,7 @@ func sAttach(ctx context.Context, s *Server, r *Req) { return } } - fid.File, err = s.fs.OpenFile(".", OREAD, 0) + fid.File, err = s.fs.OpenFile(".", OREAD) if err != nil { Respond(ctx, r, fmt.Errorf("open root: %v", err)) return @@ -357,7 +357,7 @@ func sWalk(ctx context.Context, s *Server, r *Req) { // TODO: replace this block with fs.WalkDir. for i, name := range ifcall.Wnames { cwdp = path.Join(cwdp, name) - cwdf, err = s.fs.OpenFile(cwdp, OREAD, 0) + cwdf, err = s.fs.OpenFile(cwdp, OREAD) if err != nil { break } @@ -445,7 +445,7 @@ func sOpen(ctx context.Context, s *Server, r *Req) { } if ifcall.Mode&ORCLOSE != 0 { parentPath := path.Dir(r.Fid.path) - parent, err := s.fs.OpenFile(parentPath, OREAD, 0) + parent, err := s.fs.OpenFile(parentPath, OREAD) defer parent.Close() if err != nil { Respond(ctx, r, fmt.Errorf("open parent")) @@ -469,7 +469,7 @@ func rOpen(r *Req, err error) { return } r.Fid.OMode = r.Ifcall.(*TOpen).Mode - f, err := r.Srv.fs.OpenFile(r.Fid.path, r.Fid.OMode, 0) + f, err := r.Srv.fs.OpenFile(r.Fid.path, r.Fid.OMode) if err != nil { setError(r, err) return @@ -540,7 +540,7 @@ func rCreate(r *Req, err error) { } r.Fid.OMode = r.Ifcall.(*TCreate).Mode // TODO: pass OCREATE with non 0 perm. - f, err := r.Srv.fs.OpenFile(r.Fid.path, r.Fid.OMode, 0) + f, err := r.Srv.fs.OpenFile(r.Fid.path, r.Fid.OMode) if err != nil { setError(r, err) return @@ -749,7 +749,7 @@ func sRemove(ctx context.Context, s *Server, r *Req) { } defer s.fPool.delete(ifcall.Fid) parentPath := path.Dir(r.Fid.path) - parent, err := s.fs.OpenFile(parentPath, OREAD, 0) + parent, err := s.fs.OpenFile(parentPath, OREAD) if err != nil { Respond(ctx, r, fmt.Errorf("open parent: %v", err)) return @@ -832,7 +832,7 @@ func sWStat(ctx context.Context, s *Server, r *Req) { } if wstat.Name != "" { parentPath := path.Dir(r.Fid.path) - parent, err := s.fs.OpenFile(parentPath, OREAD, 0) + parent, err := s.fs.OpenFile(parentPath, OREAD) if err != nil { Respond(ctx, r, fmt.Errorf("get parent: %v", err)) return diff --git a/testfs/fs.go b/testfs/fs.go @@ -78,7 +78,7 @@ type TestFS struct { Slow bool } -func (fs *TestFS) OpenFile(path string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) { +func (fs *TestFS) OpenFile(path string, omode lib9p.OpenMode) (lib9p.File, error) { wnames := strings.Split(path, "/") f, err := fs.Walk(wnames) if err != nil {