lib9p

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

commit 4791cc41396f63809989b1836b48393c1d38d05e
parent 50f4afc20fb2da188312238ae02e0219bde7d4cc
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed,  8 Nov 2023 12:45:42 +0900

move unix specific feature

Diffstat:
Mdiskfs/file.go | 24+++---------------------
Mdiskfs/qid_plan9.go | 0
Mdiskfs/stat_plan9.go | 3+++
Mdiskfs/stat_unix.go | 24++++++++++++++++++++++++
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