Blob


1 package ufs
3 import (
4 "os"
5 "syscall"
7 p9p "git.omarpolo.com/go-p9p"
8 )
10 func dirFromInfo(info os.FileInfo) p9p.Dir {
11 dir := p9p.Dir{}
13 dir.Qid.Path = info.Sys().(*syscall.Stat_t).Ino
14 dir.Qid.Version = uint32(info.ModTime().UnixNano() / 1000000)
16 dir.Name = info.Name()
17 dir.Mode = uint32(info.Mode() & 0777)
18 dir.Length = uint64(info.Size())
19 dir.AccessTime = atime(info.Sys().(*syscall.Stat_t))
20 dir.ModTime = info.ModTime()
21 dir.MUID = "none"
23 if info.IsDir() {
24 dir.Qid.Type |= p9p.QTDIR
25 dir.Mode |= p9p.DMDIR
26 }
28 return dir
29 }
31 func oflags(mode p9p.Flag) int {
32 flags := 0
34 switch mode & 3 {
35 case p9p.OREAD:
36 flags = os.O_RDONLY
37 break
39 case p9p.ORDWR:
40 flags = os.O_RDWR
41 break
43 case p9p.OWRITE:
44 flags = os.O_WRONLY
45 break
47 case p9p.OEXEC:
48 flags = os.O_RDONLY
49 break
50 }
52 if mode&p9p.OTRUNC != 0 {
53 flags |= os.O_TRUNC
54 }
56 return flags
57 }