lib9p

Go 9P library.
Log | Files | Refs

commit 9c86b64cc6c1b32703be23a8a72e739bff2d43f1
parent 115df38dbdad38b067b3f5c83b33e4c04feb685d
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 31 Aug 2023 07:48:13 +0900

divide file

Diffstat:
Mfile.go | 29-----------------------------
Auid.go | 32++++++++++++++++++++++++++++++++
2 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/file.go b/file.go @@ -21,35 +21,6 @@ const ( AREAD ) -func hasPerm(f File, uid string, p fs.FileMode) (bool, error) { - fi, err := f.Stat() - if err != nil { - return false, fmt.Errorf("Stat: %v", err) - } - fp := fi.Mode().Perm() - Stat, ok := fi.Sys().(*Stat) - if !ok { - panic("not Stat") - } - m := fp & 7 // other - if (p & m) == p { - return true, nil - } - if Stat.Uid == uid { - m |= (fp >> 6) & 7 - if (p & m) == p { - return true, nil - } - } - if Stat.Gid == uid { - m |= (fp >> 3) & 7 - if (p & m) == p { - return true, nil - } - } - return false, nil -} - type Stat struct { Type uint16 Dev uint32 diff --git a/uid.go b/uid.go @@ -0,0 +1,32 @@ +package lib9p + +import ( + "fmt" + "io/fs" +) + +func hasPerm(f File, uid string, p fs.FileMode) (bool, error) { + fi, err := f.Stat() + if err != nil { + return false, fmt.Errorf("Stat: %v", err) + } + fp := fi.Mode().Perm() + Stat := fi.Sys().(*Stat) + m := fp & 7 // other + if (p & m) == p { + return true, nil + } + if Stat.Uid == uid { + m |= (fp >> 6) & 7 + if (p & m) == p { + return true, nil + } + } + if Stat.Gid == uid { + m |= (fp >> 3) & 7 + if (p & m) == p { + return true, nil + } + } + return false, nil +}