void udev_rules_iter_init(struct udev_rules_iter *iter, struct udev_rules *rules)
{
- dbg(iter->rules->udev, "bufsize=%zi\n", rules->bufsize);
+ dbg(rules->udev, "bufsize=%zi\n", rules->bufsize);
iter->rules = rules;
iter->current = 0;
}
struct udev_rules *rules = iter->rules;
struct udev_rule *rule;
- dbg(rules->udev "current=%zi\n", iter->current);
+ dbg(rules->udev, "current=%zi\n", iter->current);
iter->current = rule_off;
rule = (struct udev_rule *) (rules->buf + iter->current);
next:
dbg(rules->udev, "current=%zi\n", current);
if (current >= rules->bufsize) {
- err(rules->udev, "LABEL='%s' not found, GOTO will be ignored\n", label);
- return iter->current;
+ dbg(rules->udev, "LABEL='%s' not found\n", label);
+ return 0;
}
rule = (struct udev_rule *) (rules->buf + current);
if (rule->goto_label.operation != KEY_OP_UNSET) {
char *goto_label = &rule->buf[rule->goto_label.val_off];
- dbg(rules->udev, "resolving goto label '%s'", goto_label);
+ dbg(rules->udev, "resolving goto label '%s'\n", goto_label);
rule->goto_rule_off = find_label(&iter, goto_label);
- if (rule->goto_rule_off == iter.current) {
- err(rules->udev, "goto nonexistent label '%s' in '%s'",
+ if (rule->goto_rule_off == 0) {
+ err(rules->udev, "ignore goto to nonexistent label '%s' in '%s'\n",
goto_label, filename);
+ rule->goto_rule_off = iter.current;
}
}
}