commit 4791cc41396f63809989b1836b48393c1d38d05e
parent 50f4afc20fb2da188312238ae02e0219bde7d4cc
Author: Matsuda Kenji <info@mtkn.jp>
Date: Wed, 8 Nov 2023 12:45:42 +0900
move unix specific feature
Diffstat:
4 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/diskfs/file.go b/diskfs/file.go
@@ -5,9 +5,7 @@ import (
"io/fs"
"log"
"os"
- "os/user"
"path/filepath"
- "strconv"
"git.mtkn.jp/lib9p"
)
@@ -60,27 +58,11 @@ func (f *File) Create(name string, uid string,
}
}
}()
- usr, err := user.Lookup(uid)
- if err != nil {
- return nil, fmt.Errorf("lookup user: %v", err)
- }
- u, err := strconv.Atoi(usr.Uid)
- if err != nil {
- return nil, fmt.Errorf("convert uid: %v", err)
- }
- group, err := user.LookupGroup(dirinfo.Sys().(*lib9p.Stat).Gid)
- if err != nil {
- return nil, fmt.Errorf("lookupgroup: %v", err)
- }
- g, err := strconv.Atoi(group.Gid)
- if err != nil {
- return nil, fmt.Errorf("convert gid: %v", err)
- }
- if err := os.Chown(ospath, u, g); err != nil {
- return nil, fmt.Errorf("set owner and group: %v", err)
+ if err := chown(ospath, uid, dirinfo.Sys().(*lib9p.Stat).Gid); err != nil {
+ return nil, fmt.Errorf("chown: %v", err)
}
if err := os.Chmod(ospath, perm); err != nil {
- return nil, fmt.Errorf("set file mode: %v", err)
+ return nil, fmt.Errorf("chmod: %v", err)
}
file, err = f.fs.OpenFile(filepath.Join(f.path, name), mode, 0)
if err != nil {
diff --git a/diskfs/qid_plan9.go b/diskfs/qid_plan9.go
diff --git a/diskfs/stat_plan9.go b/diskfs/stat_plan9.go
@@ -118,3 +118,5 @@ func (f *File) wstat(s *lib9p.Stat) error {
return nil
}
+// TODO: implement
+func chown(ospath, uid, gid string) error { return nil }
+\ No newline at end of file
diff --git a/diskfs/stat_unix.go b/diskfs/stat_unix.go
@@ -162,3 +162,26 @@ func (f *File) wstat(s *lib9p.Stat) error {
return nil
}
+
+func chown(ospath string, uid, gid string) error {
+ usr, err := user.Lookup(uid)
+ if err != nil {
+ return fmt.Errorf("lookup user: %v", err)
+ }
+ u, err := strconv.Atoi(usr.Uid)
+ if err != nil {
+ return fmt.Errorf("convert uid: %v", err)
+ }
+ group, err := user.LookupGroup(gid)
+ if err != nil {
+ return fmt.Errorf("lookupgroup: %v", err)
+ }
+ g, err := strconv.Atoi(group.Gid)
+ if err != nil {
+ return fmt.Errorf("convert gid: %v", err)
+ }
+ if err := os.Chown(ospath, u, g); err != nil {
+ return fmt.Errorf("set owner and group: %v", err)
+ }
+ return nil
+}
+\ No newline at end of file