os,syscall: Stat_t timespec fields are Atimespec on darwin

This allows archive/tar to build and pass.
This commit is contained in:
Damian Gryski
2023-03-03 10:13:20 -08:00
committed by Damian Gryski
parent 7706c41bf6
commit 4716298044
2 changed files with 11 additions and 6 deletions
+2 -2
View File
@@ -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)
}
+9 -4
View File
@@ -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