summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemTools.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-11-28 13:56:00 (GMT)
committerBrad King <brad.king@kitware.com>2018-11-28 13:56:00 (GMT)
commit014a098479bbe091b47d20c070fb05bc362723c7 (patch)
tree4ce888f6e4a6d4e79a5ae25214292162ab4c44e4 /Source/kwsys/SystemTools.cxx
parent18b9cf4abc351f98bbf549604d3c327a554a0143 (diff)
parentcbc772b89d94d5c02c8739d4b428a3de52f4091b (diff)
downloadCMake-014a098479bbe091b47d20c070fb05bc362723c7.zip
CMake-014a098479bbe091b47d20c070fb05bc362723c7.tar.gz
CMake-014a098479bbe091b47d20c070fb05bc362723c7.tar.bz2
Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys: KWSys 2018-11-28 (5ea12a52)
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r--Source/kwsys/SystemTools.cxx32
1 files changed, 4 insertions, 28 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 0a4ad7a..331f16e 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -1355,39 +1355,15 @@ bool SystemTools::Touch(const std::string& filename, bool create)
}
CloseHandle(h);
#elif KWSYS_CXX_HAS_UTIMENSAT
- struct timespec times[2] = { { 0, UTIME_OMIT }, { 0, UTIME_NOW } };
- if (utimensat(AT_FDCWD, filename.c_str(), times, 0) < 0) {
+ // utimensat is only available on newer Unixes and macOS 10.13+
+ if (utimensat(AT_FDCWD, filename.c_str(), NULL, 0) < 0) {
return false;
}
#else
- struct stat st;
- if (stat(filename.c_str(), &st) < 0) {
- return false;
- }
- struct timeval mtime;
- gettimeofday(&mtime, 0);
-# if KWSYS_CXX_HAS_UTIMES
- struct timeval atime;
-# if KWSYS_CXX_STAT_HAS_ST_MTIM
- atime.tv_sec = st.st_atim.tv_sec;
- atime.tv_usec = st.st_atim.tv_nsec / 1000;
-# elif KWSYS_CXX_STAT_HAS_ST_MTIMESPEC
- atime.tv_sec = st.st_atimespec.tv_sec;
- atime.tv_usec = st.st_atimespec.tv_nsec / 1000;
-# else
- atime.tv_sec = st.st_atime;
- atime.tv_usec = 0;
-# endif
- struct timeval times[2] = { atime, mtime };
- if (utimes(filename.c_str(), times) < 0) {
+ // fall back to utimes
+ if (utimes(filename.c_str(), NULL) < 0) {
return false;
}
-# else
- struct utimbuf times = { st.st_atime, mtime.tv_sec };
- if (utime(filename.c_str(), &times) < 0) {
- return false;
- }
-# endif
#endif
return true;
}