1*c9945492SAndroid Build Coastguard Worker #define _GNU_SOURCE 2*c9945492SAndroid Build Coastguard Worker #include <sys/time.h> 3*c9945492SAndroid Build Coastguard Worker #include <sys/stat.h> 4*c9945492SAndroid Build Coastguard Worker #include <errno.h> 5*c9945492SAndroid Build Coastguard Worker #include "syscall.h" 6*c9945492SAndroid Build Coastguard Worker __futimesat(int dirfd,const char * pathname,const struct timeval times[2])7*c9945492SAndroid Build Coastguard Workerint __futimesat(int dirfd, const char *pathname, const struct timeval times[2]) 8*c9945492SAndroid Build Coastguard Worker { 9*c9945492SAndroid Build Coastguard Worker struct timespec ts[2]; 10*c9945492SAndroid Build Coastguard Worker if (times) { 11*c9945492SAndroid Build Coastguard Worker int i; 12*c9945492SAndroid Build Coastguard Worker for (i=0; i<2; i++) { 13*c9945492SAndroid Build Coastguard Worker if (times[i].tv_usec >= 1000000ULL) 14*c9945492SAndroid Build Coastguard Worker return __syscall_ret(-EINVAL); 15*c9945492SAndroid Build Coastguard Worker ts[i].tv_sec = times[i].tv_sec; 16*c9945492SAndroid Build Coastguard Worker ts[i].tv_nsec = times[i].tv_usec * 1000; 17*c9945492SAndroid Build Coastguard Worker } 18*c9945492SAndroid Build Coastguard Worker } 19*c9945492SAndroid Build Coastguard Worker return utimensat(dirfd, pathname, times ? ts : 0, 0); 20*c9945492SAndroid Build Coastguard Worker } 21*c9945492SAndroid Build Coastguard Worker 22*c9945492SAndroid Build Coastguard Worker weak_alias(__futimesat, futimesat); 23