X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_rules.c;h=939febe8f69e20986a5b4629f69cd5f5caddbccc;hb=6a5aac78f4d04490fc1d0178b1d7c0cb415c2944;hp=d08edf7782fda5460153f9569efdfaa0623c5f21;hpb=0bfb84e1edd96b1e82ffd74c43b865e5d6dbf204;p=elogind.git diff --git a/udev_rules.c b/udev_rules.c index d08edf778..939febe8f 100644 --- a/udev_rules.c +++ b/udev_rules.c @@ -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; @@ -987,7 +987,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev, struct s if (rule->group.operation == KEY_OP_ASSIGN_FINAL) udev->group_final = 1; strlcpy(udev->group, key_val(rule, &rule->group), sizeof(udev->group)); - apply_format(udev, key_val(rule, &rule->group), sizeof(udev->group), class_dev, sysfs_device); + apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device); dbg("applied group='%s' to '%s'", udev->group, udev->kernel_name); } @@ -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)); + } } }