1
2
3
4
5
6
7 package unix
8
9 import (
10 "syscall"
11 "unsafe"
12 )
13
14
15
16 func path_filestat_set_times(fd int32, flags uint32, path *byte, pathLen size, atim uint64, mtim uint64, fstflags uint32) syscall.Errno
17
18 func Utimensat(dirfd int, path string, times *[2]syscall.Timespec, flag int) error {
19 if path == "" {
20 return syscall.EINVAL
21 }
22 atime := syscall.TimespecToNsec(times[0])
23 mtime := syscall.TimespecToNsec(times[1])
24
25 var fflag uint32
26 if times[0].Nsec != UTIME_OMIT {
27 fflag |= syscall.FILESTAT_SET_ATIM
28 }
29 if times[1].Nsec != UTIME_OMIT {
30 fflag |= syscall.FILESTAT_SET_MTIM
31 }
32 errno := path_filestat_set_times(
33 int32(dirfd),
34 syscall.LOOKUP_SYMLINK_FOLLOW,
35 unsafe.StringData(path),
36 size(len(path)),
37 uint64(atime),
38 uint64(mtime),
39 fflag,
40 )
41 return errnoErr(errno)
42 }
43
View as plain text