github.com/jingleWang/moby@v1.13.1/pkg/system/utimes_linux.go (about) 1 package system 2 3 import ( 4 "syscall" 5 "unsafe" 6 ) 7 8 // LUtimesNano is used to change access and modification time of the specified path. 9 // It's used for symbol link file because syscall.UtimesNano doesn't support a NOFOLLOW flag atm. 10 func LUtimesNano(path string, ts []syscall.Timespec) error { 11 // These are not currently available in syscall 12 atFdCwd := -100 13 atSymLinkNoFollow := 0x100 14 15 var _path *byte 16 _path, err := syscall.BytePtrFromString(path) 17 if err != nil { 18 return err 19 } 20 21 if _, _, err := syscall.Syscall6(syscall.SYS_UTIMENSAT, uintptr(atFdCwd), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), uintptr(atSymLinkNoFollow), 0, 0); err != 0 && err != syscall.ENOSYS { 22 return err 23 } 24 25 return nil 26 }