github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/pkg/system/utimes_unix.go (about) 1 //go:build linux || freebsd 2 // +build linux freebsd 3 4 package system // import "github.com/docker/docker/pkg/system" 5 6 import ( 7 "syscall" 8 9 "golang.org/x/sys/unix" 10 ) 11 12 // LUtimesNano is used to change access and modification time of the specified path. 13 // It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm. 14 func LUtimesNano(path string, ts []syscall.Timespec) error { 15 uts := []unix.Timespec{ 16 unix.NsecToTimespec(syscall.TimespecToNsec(ts[0])), 17 unix.NsecToTimespec(syscall.TimespecToNsec(ts[1])), 18 } 19 err := unix.UtimesNanoAt(unix.AT_FDCWD, path, uts, unix.AT_SYMLINK_NOFOLLOW) 20 if err != nil && err != unix.ENOSYS { 21 return err 22 } 23 24 return nil 25 }