From: Marcela Mašláňová Date: Thu, 28 Apr 2011 08:32:17 +0000 (+0200) Subject: Cronie disables inotify support when the /etc/crontab file does not exist at startup. X-Git-Tag: cronie1.4.8~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=acdf4ae8456888ed78201906ef528f4c28f54582;p=cronie Cronie disables inotify support when the /etc/crontab file does not exist at startup. Existence of crontab and directories wasn't controlled before creating inotify watches. --- diff --git a/src/cron.c b/src/cron.c index b8d8456..df45f44 100644 --- a/src/cron.c +++ b/src/cron.c @@ -87,21 +87,22 @@ void set_cron_watched(int fd) { for (i = 0; i < sizeof (wd) / sizeof (wd[0]); ++i) { int w; - 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); + 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; } - inotify_enabled = 0; - set_cron_unwatched(fd); - return; + wd[i] = w; } - wd[i] = w; } if (!inotify_enabled) {