Add support for futimens for platforms that don't support futimes.

Patch by pashev.igor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185601 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher
2013-07-04 00:47:09 +00:00
parent c93822901a
commit d1280c194b
5 changed files with 131 additions and 1 deletions

View File

@@ -626,11 +626,21 @@ error_code permissions(const Twine &path, perms prms) {
}
error_code setLastModificationAndAccessTime(int FD, TimeValue Time) {
#if HAVE_FUTIMENS
timespec Times[2];
Times[0].tv_sec = Time.toPosixTime();
Times[0].tv_nsec = 0;
Times[1] = Times[0];
if (::futimens(FD, Times))
#elif HAVE_FUTIMES
timeval Times[2];
Times[0].tv_sec = Time.toPosixTime();
Times[0].tv_usec = 0;
Times[1] = Times[0];
if (::futimes(FD, Times))
#else
#error Missing futimes() and futimens()
#endif
return error_code(errno, system_category());
return error_code::success();
}