Blob


1 package ufs
3 import (
4 "os"
5 "sync"
7 p9p "git.omarpolo.com/go-p9p"
8 )
10 type FileRef struct {
11 sync.Mutex
12 Path string
13 Info p9p.Dir
14 File *os.File
15 Readdir *p9p.Readdir
16 }
18 func (f *FileRef) Stat() error {
19 f.Lock()
20 defer f.Unlock()
21 return f.statLocked()
22 }
24 func (f *FileRef) statLocked() error {
25 info, err := os.Lstat(f.Path)
26 if err != nil {
27 return err
28 }
30 f.Info = dirFromInfo(info)
31 return nil
32 }
34 func (f *FileRef) IsDir() bool {
35 return f.Info.Mode&p9p.DMDIR > 0
36 }