diff --git a/main.c b/main.c index 14ac260..4be2c9e 100644 --- a/main.c +++ b/main.c @@ -3947,19 +3947,23 @@ ovl_setattr (fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, stru l = release_big_lock (); memset (times, 0, sizeof (times)); - times[0].tv_sec = UTIME_OMIT; - times[1].tv_sec = UTIME_OMIT; + times[0].tv_nsec = UTIME_OMIT; + times[1].tv_nsec = UTIME_OMIT; if (to_set & FUSE_SET_ATTR_ATIME) - times[0] = attr->st_atim; - else if (to_set & FUSE_SET_ATTR_ATIME_NOW) - times[0].tv_sec = UTIME_NOW; + { + times[0] = attr->st_atim; + if (to_set & FUSE_SET_ATTR_ATIME_NOW) + times[0].tv_nsec = UTIME_NOW; + } if (to_set & FUSE_SET_ATTR_MTIME) - times[1] = attr->st_mtim; - else if (to_set & FUSE_SET_ATTR_MTIME_NOW) - times[1].tv_sec = UTIME_NOW; + { + times[1] = attr->st_mtim; + if (to_set & FUSE_SET_ATTR_MTIME_NOW) + times[1].tv_nsec = UTIME_NOW; + } - if (times[0].tv_sec != UTIME_OMIT || times[1].tv_sec != UTIME_OMIT) + if (times[0].tv_nsec != UTIME_OMIT || times[1].tv_nsec != UTIME_OMIT) { if (fd >= 0) ret = futimens (fd, times);