Skip to content

Commit

Permalink
os: use syscall.Timespec.Unix
Browse files Browse the repository at this point in the history
Use the syscall method instead of repeating the type conversions for each OS.

Change-Id: I1db975b3aaa189cf724d7b1b7c5c41bc64dd964d
Reviewed-on: https://go-review.googlesource.com/c/go/+/374574
Trust: Ian Lance Taylor <[email protected]>
Run-TryBot: Ian Lance Taylor <[email protected]>
Reviewed-by: Emmanuel Odeke <[email protected]>
Reviewed-by: Tobias Klauser <[email protected]>
  • Loading branch information
ianlancetaylor committed Mar 28, 2022
1 parent ad646b3 commit 5fcc655
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 48 deletions.
8 changes: 2 additions & 6 deletions src/os/stat_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.Mtimespec)
fs.modTime = time.Unix(fs.sys.Mtimespec.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK, syscall.S_IFWHT:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(int64(ts.Sec), int64(ts.Nsec))
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atimespec)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atimespec.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_dragonfly.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 = time.Unix(fs.sys.Mtim.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(ts.Sec, ts.Nsec)
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atim.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_freebsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.Mtimespec)
fs.modTime = time.Unix(fs.sys.Mtimespec.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(int64(ts.Sec), int64(ts.Nsec))
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atimespec)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atimespec.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_js.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
func fillFileStatFromSys(fs *fileStat, name string) {
fs.name = basename(name)
fs.size = fs.sys.Size
fs.modTime = timespecToTime(fs.sys.Mtime, fs.sys.MtimeNsec)
fs.modTime = time.Unix(fs.sys.Mtime, fs.sys.MtimeNsec)
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -43,12 +43,8 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(sec, nsec int64) time.Time {
return time.Unix(sec, nsec)
}

// For testing.
func atime(fi FileInfo) time.Time {
st := fi.Sys().(*syscall.Stat_t)
return timespecToTime(st.Atime, st.AtimeNsec)
return time.Unix(st.Atime, st.AtimeNsec)
}
8 changes: 2 additions & 6 deletions src/os/stat_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 = time.Unix(fs.sys.Mtim.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(int64(ts.Sec), int64(ts.Nsec))
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atim.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_netbsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.Mtimespec)
fs.modTime = time.Unix(fs.sys.Mtimespec.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(ts.Sec, int64(ts.Nsec))
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atimespec)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atimespec.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_openbsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 = time.Unix(fs.sys.Mtim.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(ts.Sec, int64(ts.Nsec))
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atim.Unix())
}
8 changes: 2 additions & 6 deletions src/os/stat_solaris.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 = time.Unix(fs.sys.Mtim.Unix())
fs.mode = FileMode(fs.sys.Mode & 0777)
switch fs.sys.Mode & syscall.S_IFMT {
case syscall.S_IFBLK:
Expand Down Expand Up @@ -41,11 +41,7 @@ func fillFileStatFromSys(fs *fileStat, name string) {
}
}

func timespecToTime(ts syscall.Timespec) time.Time {
return time.Unix(ts.Sec, ts.Nsec)
}

// For testing.
func atime(fi FileInfo) time.Time {
return timespecToTime(fi.Sys().(*syscall.Stat_t).Atim)
return time.Unix(fi.Sys().(*syscall.Stat_t).Atim.Unix())
}

0 comments on commit 5fcc655

Please sign in to comment.