//go:build linux || freebsd // +build linux freebsd package system // import "github.com/docker/docker/pkg/system" import ( "syscall" "golang.org/x/sys/unix" ) // LUtimesNano is used to change access and modification time of the specified path. // It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm. func LUtimesNano(path string, ts []syscall.Timespec) error { uts := []unix.Timespec{ unix.NsecToTimespec(syscall.TimespecToNsec(ts[0])), unix.NsecToTimespec(syscall.TimespecToNsec(ts[1])), } err := unix.UtimesNanoAt(unix.AT_FDCWD, path, uts, unix.AT_SYMLINK_NOFOLLOW) if err != nil && err != unix.ENOSYS { return err } return nil }