xref: /aosp_15_r20/external/musl/src/stat/futimesat.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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 Worker int __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