Blame


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