msg->queue_time = time(NULL);
+ export_event_state(msg, EVENT_QUEUED);
+ info("seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
+
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
close(fd);
}
- export_event_state(msg, EVENT_QUEUED);
- info("seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
-
/* run one event after the other in debug mode */
if (debug_trace) {
list_add_tail(&msg->node, &running_list);
/* 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