Not all libc's have a mtim member in struct stat (dietlibc doesn't).
Change ts_usec() to receive a struct stat as parameter and implement it
accordingly for both cases.
AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
])
+# dietlibc doesn't have st.st_mtim struct member
+AC_CHECK_MEMBERS([struct stat.st_mtim], [], [], [#include <sys/stat.h>])
+
CC_CHECK_CFLAGS_APPEND([ \
-pipe \
-DANOTHER_BRICK_IN_THE \
-Wl,--as-needed \
-Wl,--gc-sections])
-
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_FILES([
Makefile
return err;
}
- *path_stamp = ts_usec(&st.st_mtim);
+ *path_stamp = stat_mstamp(&st);
if (S_ISREG(st.st_mode)) {
conf_files_insert_sorted(ctx, list, path, NULL);
idx->ctx = ctx;
close(fd);
- *stamp = ts_usec(&st.st_mtim);
+ *stamp = stat_mstamp(&st);
return idx;
#define USEC_PER_SEC 1000000ULL
#define NSEC_PER_USEC 1000ULL
-unsigned long long ts_usec(const struct timespec *ts)
+unsigned long long stat_mstamp(const struct stat *st)
{
- return (unsigned long long) ts->tv_sec * USEC_PER_SEC +
- (unsigned long long) ts->tv_nsec / NSEC_PER_USEC;
+#ifdef HAVE_STRUCT_STAT_ST_MTIM
+ return (unsigned long long) st->st_mtim.tv_sec * USEC_PER_SEC +
+ (unsigned long long) st->st_mtim.tv_nsec / NSEC_PER_USEC;
+#else
+ return (unsigned long long) st->st_mtime;
+#endif
}
int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) __must_check __attribute__((nonnull(1,2)));
char *modname_normalize(const char *modname, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(1, 2)));
char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(2)));
-unsigned long long ts_usec(const struct timespec *ts);
+unsigned long long stat_mstamp(const struct stat *st);
#endif
if (stat(path, &st) < 0)
return true;
- if (stamp != ts_usec(&st.st_mtim))
+ if (stamp != stat_mstamp(&st))
return true;
return false;