#include <utime.h>
-#include "syscall.h"
+#include <sys/stat.h>
+#include <time.h>
+#include <fcntl.h>
int utime(const char *path, const struct utimbuf *times)
{
- long ktimes[2];
- if (times) {
- ktimes[0] = times->actime;
- ktimes[1] = times->modtime;
- }
- return syscall2(__NR_utime, (long)path, times ? (long)ktimes : 0);
+ return utimensat(AT_FDCWD, path, times ? ((struct timespec [2]){
+ { .tv_sec = times->actime }, { .tv_sec = times->modtime }})
+ : 0, 0);
}