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:
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 {