diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2018-04-12 13:52:55 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2018-04-12 13:52:55 +0000 |
commit | 1cb7491a3f49f671e368efa50c2466ce75899cbd (patch) | |
tree | f1edf252e24a92ff2ef183c31821b710dec37e5b /usr.sbin/cron | |
parent | 81f187e57637431f8f0c1c71ac60b3943e447ed1 (diff) | |
download | src-1cb7491a3f49f671e368efa50c2466ce75899cbd.tar.gz src-1cb7491a3f49f671e368efa50c2466ce75899cbd.zip |
Notes
Diffstat (limited to 'usr.sbin/cron')
-rw-r--r-- | usr.sbin/cron/cron/database.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/usr.sbin/cron/cron/database.c b/usr.sbin/cron/cron/database.c index 2b0c67b9c02d..6665d87ea482 100644 --- a/usr.sbin/cron/cron/database.c +++ b/usr.sbin/cron/cron/database.c @@ -56,7 +56,7 @@ load_database(old_db) { SYSCRONTABS }, { LOCALSYSCRONTABS } }; - int i; + int i, ret; Debug(DLOAD, ("[%d] load_database()\n", getpid())) @@ -79,6 +79,18 @@ load_database(old_db) for (i = 0; i < nitems(syscrontabs); i++) { if (stat(syscrontabs[i].name, &syscrontabs[i].st) != -1) { maxmtime = TMAX(syscrontabs[i].st.st_mtime, maxmtime); + /* Traverse into directory */ + if (!(dir = opendir(syscrontabs[i].name))) + continue; + while (NULL != (dp = readdir(dir))) { + if (dp->d_name[0] == '.') + continue; + ret = fstatat(dirfd(dir), dp->d_name, &st, 0); + if (ret == 0 && !S_ISREG(st.st_mode)) + continue; + maxmtime = TMAX(st.st_mtime, maxmtime); + } + closedir(dir); } else { syscrontabs[i].st.st_mtime = 0; } |