Blob
1 package ufs3 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).Ino14 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.QTDIR25 dir.Mode |= p9p.DMDIR26 }28 return dir29 }31 func oflags(mode p9p.Flag) int {32 flags := 034 switch mode & 3 {35 case p9p.OREAD:36 flags = os.O_RDONLY37 break39 case p9p.ORDWR:40 flags = os.O_RDWR41 break43 case p9p.OWRITE:44 flags = os.O_WRONLY45 break47 case p9p.OEXEC:48 flags = os.O_RDONLY49 break50 }52 if mode&p9p.OTRUNC != 0 {53 flags |= os.O_TRUNC54 }56 return flags57 }