1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // +build !windows
- package system
- import (
- "syscall"
- )
- // StatT type contains status of a file. It contains metadata
- // like permission, owner, group, size, etc about a file.
- type StatT struct {
- mode uint32
- uid uint32
- gid uint32
- rdev uint64
- size int64
- mtim syscall.Timespec
- }
- // Mode returns file's permission mode.
- func (s StatT) Mode() uint32 {
- return s.mode
- }
- // UID returns file's user id of owner.
- func (s StatT) UID() uint32 {
- return s.uid
- }
- // GID returns file's group id of owner.
- func (s StatT) GID() uint32 {
- return s.gid
- }
- // Rdev returns file's device ID (if it's special file).
- func (s StatT) Rdev() uint64 {
- return s.rdev
- }
- // Size returns file's size.
- func (s StatT) Size() int64 {
- return s.size
- }
- // Mtim returns file's last modification time.
- func (s StatT) Mtim() syscall.Timespec {
- return s.mtim
- }
- // IsDir reports whether s describes a directory.
- func (s StatT) IsDir() bool {
- return s.mode&syscall.S_IFDIR != 0
- }
- // Stat takes a path to a file and returns
- // a system.StatT type pertaining to that file.
- //
- // Throws an error if the file does not exist
- func Stat(path string) (*StatT, error) {
- s := &syscall.Stat_t{}
- if err := syscall.Stat(path, s); err != nil {
- return nil, err
- }
- return fromStatT(s)
- }
|