chiark / gitweb /
use global udev_log variable instead of parameter in run_program
[elogind.git] / udev_rules.c
index cb74da56e37ae0da284a5f67b1692ce5965b11b0..9483c2b8f8fd0bcfd725a10c1b519ce65e5ac407 100644 (file)
@@ -190,7 +190,7 @@ static int import_program_into_env(struct udevice *udev, const char *program)
        char result[2048];
        size_t reslen;
 
-       if (run_program(program, udev->dev->subsystem, result, sizeof(result), &reslen, (udev_log_priority >= LOG_INFO)) != 0)
+       if (run_program(program, udev->dev->subsystem, result, sizeof(result), &reslen) != 0)
                return -1;
        return import_keys_into_env(udev, result, reslen);
 }
@@ -837,8 +837,7 @@ try_parent:
 
                strlcpy(program, key_val(rule, &rule->program), sizeof(program));
                udev_rules_apply_format(udev, program, sizeof(program));
-               if (run_program(program, udev->dev->subsystem, result, sizeof(result),
-                               NULL, (udev_log_priority >= LOG_INFO)) != 0) {
+               if (run_program(program, udev->dev->subsystem, result, sizeof(result), NULL) != 0) {
                        dbg("PROGRAM is false");
                        udev->program_result[0] = '\0';
                        if (rule->program.operation != KEY_OP_NOMATCH)
@@ -911,12 +910,13 @@ try_parent:
                                unsetenv(key_name);
                                info("unset ENV '%s'", key_name);
                        } else {
-                               char *key_value = name_list_key_add(&udev->env_list, key_name, temp_value);
+                               struct name_entry *entry;
 
-                               if (key_value == NULL)
+                               entry = name_list_key_add(&udev->env_list, key_name, temp_value);
+                               if (entry == NULL)
                                        break;
-                               putenv(key_value);
-                               info("set ENV '%s'", key_value);
+                               putenv(entry->name);
+                               info("set ENV '%s'", entry->name);
                        }
                }
        }
@@ -1100,6 +1100,8 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev)
                        }
 
                        if (!udev->run_final && rule->run.operation != KEY_OP_UNSET) {
+                               struct name_entry *entry;
+
                                if (rule->run.operation == KEY_OP_ASSIGN_FINAL)
                                        udev->run_final = 1;
                                if (rule->run.operation == KEY_OP_ASSIGN || rule->run.operation == KEY_OP_ASSIGN_FINAL) {
@@ -1107,7 +1109,9 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev)
                                        name_list_cleanup(&udev->run_list);
                                }
                                dbg("add run '%s'", key_val(rule, &rule->run));
-                               name_list_add(&udev->run_list, key_val(rule, &rule->run), 0);
+                               entry = name_list_add(&udev->run_list, key_val(rule, &rule->run), 0);
+                               if (rule->run_ignore_error)
+                                       entry->ignore_error = 1;
                        }
 
                        if (rule->last_rule) {
@@ -1165,13 +1169,17 @@ int udev_rules_get_run(struct udev_rules *rules, struct udevice *udev)
                        }
 
                        if (!udev->run_final && rule->run.operation != KEY_OP_UNSET) {
+                               struct name_entry *entry;
+
                                if (rule->run.operation == KEY_OP_ASSIGN ||
                                    rule->run.operation == KEY_OP_ASSIGN_FINAL) {
                                        info("reset run list");
                                        name_list_cleanup(&udev->run_list);
                                }
                                dbg("add run '%s'", key_val(rule, &rule->run));
-                               name_list_add(&udev->run_list, key_val(rule, &rule->run), 0);
+                               entry = name_list_add(&udev->run_list, key_val(rule, &rule->run), 0);
+                               if (rule->run_ignore_error)
+                                       entry->ignore_error = 1;
                                if (rule->run.operation == KEY_OP_ASSIGN_FINAL)
                                        break;
                        }