From 92f6350287289579b370c92bd885ef82cab25e13 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Mon, 14 Aug 2017 09:47:58 +0200 Subject: [PATCH] syscall: really use utimensat for UtimesNano on Solaris golang.org/cl/55130 added utimensat for Solaris but didn't use it in UtimesNano (despite indicating otherwise in the commit message). Fix this by also using utimensat for UtimesNano on Solaris. Because all versions of Solaris suppported by Go support utimensat, there is no need for the fallback logic and utimensat can be called unconditionally. This issue was pointed out by Shawn Walker-Salas. Updates #16480 Change-Id: I114338113a6da3cfcb8bca950674bdc8f5a7a9e5 Reviewed-on: https://go-review.googlesource.com/55141 Run-TryBot: Ian Lance Taylor Reviewed-by: Ian Lance Taylor --- src/syscall/syscall_solaris.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/syscall/syscall_solaris.go b/src/syscall/syscall_solaris.go index 9a5fbdae53..b71cdcfdd7 100644 --- a/src/syscall/syscall_solaris.go +++ b/src/syscall/syscall_solaris.go @@ -270,16 +270,11 @@ func Gethostname() (name string, err error) { return name, err } -func UtimesNano(path string, ts []Timespec) (err error) { +func UtimesNano(path string, ts []Timespec) error { if len(ts) != 2 { return EINVAL } - var tv [2]Timeval - for i := 0; i < 2; i++ { - tv[i].Sec = ts[i].Sec - tv[i].Usec = ts[i].Nsec / 1000 - } - return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) + return utimensat(_AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) } //sys fcntl(fd int, cmd int, arg int) (val int, err error) -- 2.48.1