| // +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 |
| } |