summaryrefslogtreecommitdiffstats
path: root/src/util/profile/prof_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/profile/prof_file.c')
-rw-r--r--src/util/profile/prof_file.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/util/profile/prof_file.c b/src/util/profile/prof_file.c
index cdeaf50a7..347fef739 100644
--- a/src/util/profile/prof_file.c
+++ b/src/util/profile/prof_file.c
@@ -316,6 +316,7 @@ errcode_t profile_update_file_data(prf_data_t data)
errcode_t retval;
#ifdef HAVE_STAT
struct stat st;
+ unsigned long frac;
#ifdef STAT_ONCE_PER_SECOND
time_t now;
#endif
@@ -342,7 +343,18 @@ errcode_t profile_update_file_data(prf_data_t data)
#ifdef STAT_ONCE_PER_SECOND
data->last_stat = now;
#endif
- if (st.st_mtime == data->timestamp && data->root != NULL) {
+#if defined HAVE_STRUCT_STAT_ST_MTIMENSEC
+ frac = st.st_mtimensec;
+#elif defined HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
+ frac = st.st_mtimespec.tv_nsec;
+#elif defined HAVE_STRUCT_STAT_ST_MTIM_TV_USEC
+ frac = st.st_mtim.tv_usec;
+#else
+ frac = 0;
+#endif
+ if (st.st_mtime == data->timestamp
+ && frac == data->frac_ts
+ && data->root != NULL) {
k5_mutex_unlock(&data->lock);
return 0;
}
@@ -387,6 +399,7 @@ errcode_t profile_update_file_data(prf_data_t data)
assert(data->root != NULL);
#ifdef HAVE_STAT
data->timestamp = st.st_mtime;
+ data->frac_ts = frac;
#endif
k5_mutex_unlock(&data->lock);
return 0;