package main import ( "errors" "fmt" "io/fs" "os" p9 "github.com/Harvey-OS/ninep/protocol" "git.samanthony.xyz/buth/back/qver" ) type UsersDir struct { path string *qver.Version } func NewUsersDir(path string, rootVer *qver.Version) (*UsersDir, error) { info, err := os.Stat(path) if errors.Is(err, fs.ErrNotExist) { if err := os.Mkdir(path, 0770); err != nil { return nil, err } } else if err != nil { return nil, err } else if !info.IsDir() { return nil, fmt.Errorf("%q is not a directory", path) } return &UsersDir{ path, qver.New(qver.Parent(rootVer)), }, nil } func (dir *UsersDir) Close() { dir.Version.Close() } func (dir *UsersDir) Qid() (p9.QID, error) { ver, err := dir.Version.Get() if err != nil { return p9.QID{}, err } return p9.QID{ Type: p9.QTDIR, Version: ver, Path: usersQidPath, }, nil }