28 lines
595 B
Go
28 lines
595 B
Go
|
package system
|
||
|
|
||
|
import (
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
// fromStatT converts a syscall.Stat_t type to a system.Stat_t type
|
||
|
func fromStatT(s *syscall.Stat_t) (*Stat_t, error) {
|
||
|
return &Stat_t{size: s.Size,
|
||
|
mode: uint32(s.Mode),
|
||
|
uid: s.Uid,
|
||
|
gid: s.Gid,
|
||
|
rdev: uint64(s.Rdev),
|
||
|
mtim: s.Mtimespec}, nil
|
||
|
}
|
||
|
|
||
|
// Stat takes a path to a file and returns
|
||
|
// a system.Stat_t type pertaining to that file.
|
||
|
//
|
||
|
// Throws an error if the file does not exist
|
||
|
func Stat(path string) (*Stat_t, error) {
|
||
|
s := &syscall.Stat_t{}
|
||
|
if err := syscall.Stat(path, s); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return fromStatT(s)
|
||
|
}
|