chiark / gitweb /
ignore rule with GOTO to a non-existent label
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index d6977e9655de8442195c8ba98b9c728c3c452abc..0827a5ceb32551b41520caa4414c82b774b1483f 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -1142,14 +1142,23 @@ int main(int argc, char *argv[], char *envp[])
        /* watch rules directory */
        inotify_fd = inotify_init();
        if (inotify_fd >= 0) {
-               char filename[PATH_MAX];
-
-               inotify_add_watch(inotify_fd, udev_rules_dir, IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
-
-               /* watch dynamic rules directory */
-               strlcpy(filename, udev_root, sizeof(filename));
-               strlcat(filename, "/"RULES_DYN_DIR, sizeof(filename));
-               inotify_add_watch(inotify_fd, filename, IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+               if (udev_rules_dir[0] != '\0') {
+                       inotify_add_watch(inotify_fd, udev_rules_dir,
+                                         IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+               } else {
+                       char filename[PATH_MAX];
+
+                       inotify_add_watch(inotify_fd, RULES_LIB_DIR,
+                                         IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+                       inotify_add_watch(inotify_fd, RULES_ETC_DIR,
+                                         IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+
+                       /* watch dynamic rules directory */
+                       strlcpy(filename, udev_root, sizeof(filename));
+                       strlcat(filename, "/"RULES_DYN_DIR, sizeof(filename));
+                       inotify_add_watch(inotify_fd, filename,
+                                         IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+               }
        } else if (errno == ENOSYS)
                err("the kernel does not support inotify, udevd can't monitor rules file changes\n");
        else