diff --git a/src/os/stat_darwin.go b/src/os/stat_darwin.go index a27a3b66..74214cef 100644 --- a/src/os/stat_darwin.go +++ b/src/os/stat_darwin.go @@ -12,7 +12,7 @@ import ( func fillFileStatFromSys(fs *fileStat, name string) { fs.name = basename(name) fs.size = fs.sys.Size - fs.modTime = timespecToTime(fs.sys.Mtim) + fs.modTime = timespecToTime(fs.sys.Mtimespec) fs.mode = FileMode(fs.sys.Mode & 0777) switch fs.sys.Mode & syscall.S_IFMT { case syscall.S_IFBLK, syscall.S_IFWHT: @@ -47,5 +47,5 @@ func timespecToTime(ts syscall.Timespec) time.Time { // For testing. func atime(fi FileInfo) time.Time { - return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim) + return timespecToTime(fi.Sys().(*syscall.Stat_t).Atimespec) } diff --git a/src/syscall/syscall_libc_darwin.go b/src/syscall/syscall_libc_darwin.go index 2a0dd206..79c5f2ba 100644 --- a/src/syscall/syscall_libc_darwin.go +++ b/src/syscall/syscall_libc_darwin.go @@ -147,6 +147,11 @@ type Timespec struct { Nsec int64 } +// Unix returns the time stored in ts as seconds plus nanoseconds. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + // Source: upstream ztypes_darwin_amd64.go type Dirent struct { Ino uint64 @@ -168,10 +173,10 @@ type Stat_t struct { Gid uint32 Rdev int32 Pad_cgo_0 [4]byte - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim Timespec + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Btimespec Timespec Size int64 Blocks int64 Blksize int32