diff options
-rw-r--r-- | udev/test-udev.c | 2 | ||||
-rw-r--r-- | udev/udev-event.c | 33 | ||||
-rw-r--r-- | udev/udev-rules.c | 33 | ||||
-rw-r--r-- | udev/udev.h | 2 | ||||
-rw-r--r-- | udev/udevd.c | 2 |
5 files changed, 36 insertions, 36 deletions
diff --git a/udev/test-udev.c b/udev/test-udev.c index d304a1cc15..1cc83c4a69 100644 --- a/udev/test-udev.c +++ b/udev/test-udev.c @@ -104,7 +104,7 @@ int main(int argc, char *argv[]) alarm(udev_device_get_event_timeout(dev)); if (err == 0 && !event->ignore_device && udev_get_run(udev)) - udev_rules_run(event); + udev_event_execute_run(event); udev_event_unref(event); udev_device_unref(dev); diff --git a/udev/udev-event.c b/udev/udev-event.c index fe4dcec4e1..b7c3ff142a 100644 --- a/udev/udev-event.c +++ b/udev/udev-event.c @@ -282,3 +282,36 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules) exit: return err; } + +int udev_event_execute_run(struct udev_event *event) +{ + struct udev_list_entry *list_entry; + int err = 0; + + dbg(event->udev, "executing run list\n"); + udev_list_entry_foreach(list_entry, udev_list_get_entry(&event->run_list)) { + const char *cmd = udev_list_entry_get_name(list_entry); + + if (strncmp(cmd, "socket:", strlen("socket:")) == 0) { + struct udev_monitor *monitor; + + monitor = udev_monitor_new_from_socket(event->udev, &cmd[strlen("socket:")]); + if (monitor == NULL) + continue; + udev_monitor_send_device(monitor, event->dev); + udev_monitor_unref(monitor); + } else { + char program[UTIL_PATH_SIZE]; + char **envp; + + util_strlcpy(program, cmd, sizeof(program)); + udev_rules_apply_format(event, program, sizeof(program)); + envp = udev_device_get_properties_envp(event->dev); + if (run_program(event->udev, program, envp, NULL, 0, NULL) != 0) { + if (!udev_list_entry_get_flag(list_entry)) + err = -1; + } + } + } + return err; +} diff --git a/udev/udev-rules.c b/udev/udev-rules.c index 62624bbc85..978581fb50 100644 --- a/udev/udev-rules.c +++ b/udev/udev-rules.c @@ -374,39 +374,6 @@ static int import_parent_into_env(struct udev_device *dev, const char *filter) return 0; } -int udev_rules_run(struct udev_event *event) -{ - struct udev_list_entry *list_entry; - int err = 0; - - dbg(event->udev, "executing run list\n"); - udev_list_entry_foreach(list_entry, udev_list_get_entry(&event->run_list)) { - const char *cmd = udev_list_entry_get_name(list_entry); - - if (strncmp(cmd, "socket:", strlen("socket:")) == 0) { - struct udev_monitor *monitor; - - monitor = udev_monitor_new_from_socket(event->udev, &cmd[strlen("socket:")]); - if (monitor == NULL) - continue; - udev_monitor_send_device(monitor, event->dev); - udev_monitor_unref(monitor); - } else { - char program[UTIL_PATH_SIZE]; - char **envp; - - util_strlcpy(program, cmd, sizeof(program)); - udev_rules_apply_format(event, program, sizeof(program)); - envp = udev_device_get_properties_envp(event->dev); - if (run_program(event->udev, program, envp, NULL, 0, NULL) != 0) { - if (!udev_list_entry_get_flag(list_entry)) - err = -1; - } - } - } - return err; -} - #define WAIT_LOOP_PER_SECOND 50 static int wait_for_file(struct udev_event *event, const char *file, int timeout) { diff --git a/udev/udev.h b/udev/udev.h index d0ffb6cb31..c8425f768f 100644 --- a/udev/udev.h +++ b/udev/udev.h @@ -90,13 +90,13 @@ struct udev_rules; extern struct udev_event *udev_event_new(struct udev_device *dev); extern void udev_event_unref(struct udev_event *event); extern int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules); +extern int udev_event_execute_run(struct udev_event *event); /* udev-rules.c */ extern struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names); extern void udev_rules_unref(struct udev_rules *rules); extern int udev_rules_get_name(struct udev_rules *rules, struct udev_event *event); extern int udev_rules_get_run(struct udev_rules *rules, struct udev_event *event); -extern int udev_rules_run(struct udev_event *event); extern void udev_rules_apply_format(struct udev_event *event, char *string, size_t maxsize); /* udev-node.c */ diff --git a/udev/udevd.c b/udev/udevd.c index 111f120006..f812940364 100644 --- a/udev/udevd.c +++ b/udev/udevd.c @@ -220,7 +220,7 @@ static void event_fork(struct udev_event *event) /* execute RUN= */ if (err == 0 && !event->ignore_device && udev_get_run(event->udev)) - udev_rules_run(event); + udev_event_execute_run(event); info(event->udev, "seq %llu exit with %i\n", udev_device_get_seqnum(event->dev), err); logging_close(); if (err != 0) |