* fixed utimensat() when times is NULL, both the access and modification timestamps should be set (bug #5759).

* the meaning of AT_SYMLINK_NOFOLLOW was also reversed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36356 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2010-04-19 17:12:44 +00:00
parent 3f9f9f9aee
commit 1276d52122
+2 -1
View File
@@ -54,6 +54,7 @@ utimensat(int fd, const char *path, const struct timespec times[2], int flag)
bigtime_t now = real_time_clock_usecs();
stat.st_atim.tv_sec = stat.st_mtim.tv_sec = now / 1000000;
stat.st_atim.tv_nsec = stat.st_mtim.tv_nsec = (now % 1000000) * 1000;
mask |= B_STAT_ACCESS_TIME | B_STAT_MODIFICATION_TIME;
}
if (times != NULL) {
@@ -84,7 +85,7 @@ utimensat(int fd, const char *path, const struct timespec times[2], int flag)
// set the times -- as per spec we even need to do this, if both have
// UTIME_OMIT set
status = _kern_write_stat(fd, path, (flag & AT_SYMLINK_NOFOLLOW) != 0,
status = _kern_write_stat(fd, path, (flag & AT_SYMLINK_NOFOLLOW) == 0,
&stat, sizeof(struct stat), mask);
RETURN_AND_SET_ERRNO(status);