X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstat%2Ffutimesat.c;h=4bdb1c2965a909f9c9cf95f3776d0cfc5f852ae3;hb=6aeb9c6703670649ee09b3c8575fb428168bb75c;hp=dbefc844c46e092067a4650a8db1e59857192269;hpb=571744447c23f91feb6439948f3a619aca850dfb;p=musl diff --git a/src/stat/futimesat.c b/src/stat/futimesat.c index dbefc844..4bdb1c29 100644 --- a/src/stat/futimesat.c +++ b/src/stat/futimesat.c @@ -1,10 +1,22 @@ #define _GNU_SOURCE #include +#include +#include #include "syscall.h" -#ifdef SYS_futimesat -int futimesat(int dirfd, const char *pathname, const struct timeval times[2]) +int __futimesat(int dirfd, const char *pathname, const struct timeval times[2]) { - return syscall(SYS_futimesat, dirfd, pathname, times); + struct timespec ts[2]; + if (times) { + int i; + for (i=0; i<2; i++) { + if (times[i].tv_usec >= 1000000ULL) + return __syscall_ret(-EINVAL); + ts[i].tv_sec = times[i].tv_sec; + ts[i].tv_nsec = times[i].tv_usec * 1000; + } + } + return utimensat(dirfd, pathname, times ? ts : 0, 0); } -#endif + +weak_alias(__futimesat, futimesat);