github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/pkg/system/stat_windows.go (about) 1 package system // import "github.com/demonoid81/moby/pkg/system" 2 3 import ( 4 "os" 5 "time" 6 ) 7 8 // StatT type contains status of a file. It contains metadata 9 // like permission, size, etc about a file. 10 type StatT struct { 11 mode os.FileMode 12 size int64 13 mtim time.Time 14 } 15 16 // Size returns file's size. 17 func (s StatT) Size() int64 { 18 return s.size 19 } 20 21 // Mode returns file's permission mode. 22 func (s StatT) Mode() os.FileMode { 23 return os.FileMode(s.mode) 24 } 25 26 // Mtim returns file's last modification time. 27 func (s StatT) Mtim() time.Time { 28 return time.Time(s.mtim) 29 } 30 31 // Stat takes a path to a file and returns 32 // a system.StatT type pertaining to that file. 33 // 34 // Throws an error if the file does not exist 35 func Stat(path string) (*StatT, error) { 36 fi, err := os.Stat(path) 37 if err != nil { 38 return nil, err 39 } 40 return fromStatT(&fi) 41 } 42 43 // fromStatT converts a os.FileInfo type to a system.StatT type 44 func fromStatT(fi *os.FileInfo) (*StatT, error) { 45 return &StatT{ 46 size: (*fi).Size(), 47 mode: (*fi).Mode(), 48 mtim: (*fi).ModTime()}, nil 49 }