summaryrefslogtreecommitdiff
path: root/src/stat/utimensat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stat/utimensat.c')
-rw-r--r--src/stat/utimensat.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/stat/utimensat.c b/src/stat/utimensat.c
index 159c8be3..49d74c22 100644
--- a/src/stat/utimensat.c
+++ b/src/stat/utimensat.c
@@ -6,6 +6,8 @@
int utimensat(int fd, const char *path, const struct timespec times[2], int flags)
{
+ if (times && times[0].tv_nsec==UTIME_NOW && times[1].tv_nsec==UTIME_NOW)
+ times = 0;
int r = __syscall(SYS_utimensat, fd, path, times, flags);
#ifdef SYS_futimesat
if (r != -ENOSYS || flags) return __syscall_ret(r);
@@ -15,12 +17,8 @@ int utimensat(int fd, const char *path, const struct timespec times[2], int flag
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)
+ if (times[i].tv_nsec == UTIME_NOW
+ || times[i].tv_nsec == UTIME_OMIT)
return __syscall_ret(-ENOSYS);
return __syscall_ret(-EINVAL);
}