-diff --git a/src/cron.c b/src/cron.c
-index 7dc2958..7917589 100644
---- a/src/cron.c
-+++ b/src/cron.c
-@@ -64,11 +64,19 @@ static int DisableInotify;
- int wd[NUM_WATCHES];
- const char *watchpaths[NUM_WATCHES] = {SPOOL_DIR, SYS_CROND_DIR, SYSCRONTAB};
-
-+static void reset_watches(void) {
-+ int i;
-+
-+ for (i = 0; i < sizeof (wd) / sizeof (wd[0]); ++i) {
-+ wd[i] = -2;
-+ }
-+}
-+
- void set_cron_unwatched(int fd) {
- int i;
-
- for (i = 0; i < sizeof (wd) / sizeof (wd[0]); ++i) {
-- if (wd[i] < 0) {
-+ if (wd[i] > 0) {
- inotify_rm_watch(fd, wd[i]);
- wd[i] = -1;
- }
-@@ -87,22 +95,21 @@ void set_cron_watched(int fd) {
- for (i = 0; i < sizeof (wd) / sizeof (wd[0]); ++i) {
- int w;
-
-- if (open(watchpaths[i], O_RDONLY | O_NONBLOCK, 0) != -1) {
-- w = inotify_add_watch(fd, watchpaths[i],
-- IN_CREATE | IN_CLOSE_WRITE | IN_ATTRIB | IN_MODIFY | IN_MOVED_TO |
-- IN_MOVED_FROM | IN_MOVE_SELF | IN_DELETE | IN_DELETE_SELF);
-- if (w < 0) {
-- if (wd[i] != -1) {
-- log_it("CRON", pid, "This directory or file can't be watched",
-- watchpaths[i], errno);
-- log_it("CRON", pid, "INFO", "running without inotify support", 0);
-- }
-- inotify_enabled = 0;
-- set_cron_unwatched(fd);
-- return;
-+ w = inotify_add_watch(fd, watchpaths[i],
-+ IN_CREATE | IN_CLOSE_WRITE | IN_ATTRIB | IN_MODIFY | IN_MOVED_TO |
-+ IN_MOVED_FROM | IN_MOVE_SELF | IN_DELETE | IN_DELETE_SELF);
-+ if (w < 0 && errno != ENOENT) {
-+ if (wd[i] != -1) {
-+ log_it("CRON", pid, "This directory or file can't be watched",
-+ watchpaths[i], errno);
-+ log_it("CRON", pid, "INFO", "running without inotify support",
-+ 0);
- }
-- wd[i] = w;
-+ inotify_enabled = 0;
-+ set_cron_unwatched(fd);
-+ return;
- }
-+ wd[i] = w;
- }
-
- if (!inotify_enabled) {
-@@ -120,6 +127,7 @@ static void handle_signals(cron_db * database) {
- /* watches must be reinstated on reload */
- if (inotify_enabled && (EnableClustering != 1)) {
- set_cron_unwatched(database->ifd);
-+ reset_watches();
- inotify_enabled = 0;
- }
- #endif
-@@ -158,9 +166,6 @@ int main(int argc, char *argv[]) {
- char *cs;
- pid_t pid = getpid();
- long oldGMToff;
--#if defined WITH_INOTIFY
-- int i;
--#endif
-
- ProgramName = argv[0];
- MailCmd[0] = '\0';
-@@ -261,13 +266,7 @@ int main(int argc, char *argv[]) {
- "", 0);
- }
- else {
-- for (i = 0; i < sizeof (wd) / sizeof (wd[0]); ++i) {
-- /* initialize to negative number other than -1
-- * so an eventual error is reported for the first time
-- */
-- wd[i] = -2;
-- }
--
-+ reset_watches();
- database.ifd = fd = inotify_init();
- fcntl(fd, F_SETFD, FD_CLOEXEC);
- if (fd < 0)