From 00a9489ff302c6c92689c96ebd7585a1a74edbea Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Wed, 11 Dec 2013 15:42:33 +0000 Subject: [PATCH] Build fix for Android NDK which has neither futimes nor futimens Based on a patch by Neil Henning! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197045 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/FileSystem.h | 5 +++++ lib/Support/Unix/Path.inc | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/llvm/Support/FileSystem.h b/include/llvm/Support/FileSystem.h index d301f842ea9..bf2e514d409 100644 --- a/include/llvm/Support/FileSystem.h +++ b/include/llvm/Support/FileSystem.h @@ -545,6 +545,11 @@ inline error_code file_size(const Twine &Path, uint64_t &Result) { return error_code::success(); } +/// @brief Set the file modification and access time. +/// +/// @returns errc::success if the file times were successfully set, otherwise a +/// platform specific error_code or errc::not_supported on platforms +/// where the functionality isn't available. error_code setLastModificationAndAccessTime(int FD, TimeValue Time); /// @brief Is status available? diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc index 734ea5d110a..d5260424616 100644 --- a/lib/Support/Unix/Path.inc +++ b/lib/Support/Unix/Path.inc @@ -531,17 +531,20 @@ error_code setLastModificationAndAccessTime(int FD, TimeValue Time) { Times[0].tv_nsec = 0; Times[1] = Times[0]; if (::futimens(FD, Times)) + return error_code(errno, system_category()); + return error_code::success(); #elif defined(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(); +#else +#warning Missing futimes() and futimens() + return make_error_code(errc::not_supported); +#endif } error_code mapped_file_region::init(int FD, bool CloseFD, uint64_t Offset) {