#include <sys/stat.h>
#include <sys/time.h>
#include <fcntl.h>
#include <errno.h>
#include "syscall.h"

int utimensat(int fd,
              const char* path,
              const struct timespec times[2],
              int flags) {
  int r = __syscall(SYS_utimensat, fd, path, times, flags);
#ifdef SYS_futimesat
  if (r != -ENOSYS || flags)
    return __syscall_ret(r);
  struct timeval *tv = 0, tmp[2];
  if (times) {
    int i;
    tv = tmp;
    for (i = 0; i < 2; i++) {
      if (times[i].tv_nsec >= 1000000000ULL) {
        if (times[i].tv_nsec == UTIME_NOW &&
            times[1 - i].tv_nsec == UTIME_NOW) {
          tv = 0;
          break;
        }
        if (times[i].tv_nsec == UTIME_OMIT)
          return __syscall_ret(-ENOSYS);
        return __syscall_ret(-EINVAL);
      }
      tmp[i].tv_sec = times[i].tv_sec;
      tmp[i].tv_usec = times[i].tv_nsec / 1000;
    }
  }

  r = __syscall(SYS_futimesat, fd, path, tv);
  if (r != -ENOSYS || fd != AT_FDCWD)
    return __syscall_ret(r);
  r = __syscall(SYS_utimes, path, tv);
#endif
  return __syscall_ret(r);
}
