#define MSEC_PER_SEC 1000ULL
#define NSEC_PER_MSEC 1000000ULL
+unsigned long long ts_usec(const struct timespec *ts);
unsigned long long now_usec(void);
unsigned long long now_msec(void);
int sleep_until_msec(unsigned long long msec);
return 0;
}
-static int depfile_up_to_date_dir(DIR *d, time_t mtime, size_t baselen, char *path)
+static int depfile_up_to_date_dir(DIR *d, const struct timespec *ts, size_t baselen,
+ char *path)
{
struct dirent *de;
int err = 1, dfd = dirfd(d);
}
path[baselen + namelen] = '/';
path[baselen + namelen + 1] = '\0';
- err = depfile_up_to_date_dir(subdir, mtime, baselen + namelen + 1,
+ err = depfile_up_to_date_dir(subdir, ts, baselen + namelen + 1,
path);
closedir(subdir);
} else if (S_ISREG(st.st_mode)) {
continue;
memcpy(path + baselen, name, namelen + 1);
- err = st.st_mtime <= mtime;
+ err = ts_usec(&st.st_mtim) <= ts_usec(ts);
if (err == 0) {
DBG("%s %" PRIu64 " is newer than %" PRIu64 "\n", path,
- (uint64_t)st.st_mtime, (uint64_t)mtime);
+ (uint64_t)ts_usec(&st.st_mtim),
+ (uint64_t)ts_usec(ts));
}
} else {
ERR("unsupported file type %s: %o\n", path, st.st_mode & S_IFMT);
baselen++;
path[baselen] = '\0';
- err = depfile_up_to_date_dir(d, st.st_mtime, baselen, path);
+ err = depfile_up_to_date_dir(d, &st.st_mtim, baselen, path);
closedir(d);
return err;
}