HAVE_STRUCT_STAT_ST_CTIM LANGUAGE CXX)
check_struct_has_member("struct stat" st_mtim sys/stat.h
HAVE_STRUCT_STAT_ST_MTIM LANGUAGE CXX)
+check_struct_has_member("struct stat" st_atimespec sys/stat.h
+ HAVE_STRUCT_STAT_ST_ATIMESPEC LANGUAGE CXX)
+check_struct_has_member("struct stat" st_ctimespec sys/stat.h
+ HAVE_STRUCT_STAT_ST_CTIMESPEC LANGUAGE CXX)
+check_struct_has_member("struct stat" st_mtimespec sys/stat.h
+ HAVE_STRUCT_STAT_ST_MTIMESPEC LANGUAGE CXX)
check_struct_has_member("struct statfs" f_fstypename sys/mount.h
HAVE_STRUCT_STATFS_F_FSTYPENAME LANGUAGE CXX)
// Define if "st_mtim" is a member of "struct stat".
#cmakedefine HAVE_STRUCT_STAT_ST_MTIM
+// Define if "st_atimespec" is a member of "struct stat".
+#cmakedefine HAVE_STRUCT_STAT_ST_ATIMESPEC
+
+// Define if "st_ctimespec" is a member of "struct stat".
+#cmakedefine HAVE_STRUCT_STAT_ST_CTIMESPEC
+
+// Define if "st_mtimespec" is a member of "struct stat".
+#cmakedefine HAVE_STRUCT_STAT_ST_MTIMESPEC
+
// Define if you have the "syslog" function.
#cmakedefine HAVE_SYSLOG
dev_t st_dev;
ino_t st_ino;
mode_t st_mode;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
timespec st_mtim;
-#else
- time_t st_mtim;
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_CTIM
timespec st_ctim; // Included for sanity checking.
-#else
- time_t st_ctim; // Included for sanity checking.
-#endif
- off_t st_size; // Included for sanity checking.
+ off_t st_size; // Included for sanity checking.
bool sloppy_time_macros;
};
key.st_dev = stat.device();
key.st_ino = stat.inode();
key.st_mode = stat.mode();
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
key.st_mtim = stat.mtim();
-#else
- key.st_mtim = stat.mtime();
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_CTIM
key.st_ctim = stat.ctim();
-#else
- key.st_ctim = stat.ctime();
-#endif
key.st_size = stat.size();
Hash hash;
{
#if defined(_WIN32) || defined(HAVE_STRUCT_STAT_ST_ATIM)
return m_stat.st_atim;
+#elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC)
+ return m_stat.st_atimespec;
#else
return {m_stat.st_atime, 0};
#endif
{
#if defined(_WIN32) || defined(HAVE_STRUCT_STAT_ST_CTIM)
return m_stat.st_ctim;
+#elif defined(HAVE_STRUCT_STAT_ST_CTIMESPEC)
+ return m_stat.st_ctimespec;
#else
return {m_stat.st_ctime, 0};
#endif
{
#if defined(_WIN32) || defined(HAVE_STRUCT_STAT_ST_MTIM)
return m_stat.st_mtim;
+#elif defined(HAVE_STRUCT_STAT_ST_CTIMESPEC)
+ return m_stat.st_mtimespec;
#else
return {m_stat.st_mtime, 0};
#endif
# ifdef HAVE_STRUCT_STAT_ST_CTIM
CHECK(stat.ctim().tv_sec == st.st_ctim.tv_sec);
CHECK(stat.ctim().tv_nsec == st.st_ctim.tv_nsec);
+# elif defined(HAVE_STRUCT_STAT_ST_CTIMESPEC)
+ CHECK(stat.ctim().tv_sec == st.st_ctimespec.tv_sec);
+ CHECK(stat.ctim().tv_nsec == st.st_ctimespec.tv_nsec);
# else
CHECK(stat.ctim().tv_sec == st.st_ctime);
CHECK(stat.ctim().tv_nsec == 0);
# ifdef HAVE_STRUCT_STAT_ST_MTIM
CHECK(stat.mtim().tv_sec == st.st_mtim.tv_sec);
CHECK(stat.mtim().tv_nsec == st.st_mtim.tv_nsec);
+# elif defined(HAVE_STRUCT_STAT_ST_MTIMESPEC)
+ CHECK(stat.mtim().tv_sec == st.st_mtimespec.tv_sec);
+ CHECK(stat.mtim().tv_nsec == st.st_mtimespec.tv_nsec);
# else
CHECK(stat.mtim().tv_sec == st.st_mtime);
CHECK(stat.mtim().tv_nsec == 0);