chiark / gitweb /
allow rules to have labels and skip to next label
[elogind.git] / udev_rules.c
index 5669a8593ede14c05c1449ebcbe66086cc01bc91..939febe8f69e20986a5b4629f69cd5f5caddbccc 100644 (file)
@@ -748,8 +748,8 @@ static int match_rule(struct udevice *udev, struct udev_rule *rule,
                        const char *value = getenv(key_name);
 
                        if (!value) {
-                               dbg("ENV{'%s'} is not found", key_name);
-                               goto exit;
+                               dbg("ENV{'%s'} is not set", key_name);
+                               value = "";
                        }
                        if (match_key("ENV", rule, &pair->key, value))
                                goto exit;
@@ -1069,6 +1069,11 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev, struct s
                                dbg("last rule to be applied");
                                break;
                        }
+
+                       if (rule->goto_label.operation != KEY_OP_UNSET) {
+                               dbg("moving forward to label '%s'", key_val(rule, &rule->goto_label));
+                               udev_rules_iter_label(rules, key_val(rule, &rule->goto_label));
+                       }
                }
        }