chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don not print error if GOTO jumps just to next rule
[elogind.git]
/
udev
/
udev_rules_parse.c
diff --git
a/udev/udev_rules_parse.c
b/udev/udev_rules_parse.c
index 5a76889c841adeca8781214baf8bd3dc3b8004cc..c42bd08c51f1d2490da2f5fce7a126976a57c58a 100644
(file)
--- a/
udev/udev_rules_parse.c
+++ b/
udev/udev_rules_parse.c
@@
-31,7
+31,7
@@
void udev_rules_iter_init(struct udev_rules_iter *iter, struct udev_rules *rules)
{
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;
}
iter->rules = rules;
iter->current = 0;
}
@@
-63,7
+63,7
@@
struct udev_rule *udev_rules_iter_goto(struct udev_rules_iter *iter, size_t rule
struct udev_rules *rules = iter->rules;
struct udev_rule *rule;
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);
iter->current = rule_off;
rule = (struct udev_rule *) (rules->buf + iter->current);
@@
-79,8
+79,8
@@
static size_t find_label(const struct udev_rules_iter *iter, const char *label)
next:
dbg(rules->udev, "current=%zi\n", current);
if (current >= rules->bufsize) {
next:
dbg(rules->udev, "current=%zi\n", current);
if (current >= rules->bufsize) {
-
err(rules->udev, "LABEL='%s' not found, GOTO will be ignore
d\n", label);
- return
iter->current
;
+
dbg(rules->udev, "LABEL='%s' not foun
d\n", label);
+ return
0
;
}
rule = (struct udev_rule *) (rules->buf + current);
}
rule = (struct udev_rule *) (rules->buf + current);
@@
-692,7
+692,7
@@
static int parse_file(struct udev_rules *rules, const char *filename)
start = rules->bufsize;
if (file_map(filename, &buf, &bufsize) != 0) {
start = rules->bufsize;
if (file_map(filename, &buf, &bufsize) != 0) {
- err(rules->udev, "can't open '%s' as rules file: %
s\n", filename, strerror(errno)
);
+ err(rules->udev, "can't open '%s' as rules file: %
m\n", filename
);
return -1;
}
info(rules->udev, "reading '%s' as rules file\n", filename);
return -1;
}
info(rules->udev, "reading '%s' as rules file\n", filename);
@@
-745,11
+745,12
@@
static int parse_file(struct udev_rules *rules, const char *filename)
if (rule->goto_label.operation != KEY_OP_UNSET) {
char *goto_label = &rule->buf[rule->goto_label.val_off];
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);
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);
goto_label, filename);
+ rule->goto_rule_off = iter.current;
}
}
}
}
}
}
@@
-831,7
+832,7
@@
int udev_rules_init(struct udev *udev, struct udev_rules *rules, int resolve_nam
else
dbg(udev, "empty rules file '%s'\n", name_loop->name);
} else
else
dbg(udev, "empty rules file '%s'\n", name_loop->name);
} else
- err(udev, "could not read '%s': %
s\n", name_loop->name, strerror(errno)
);
+ err(udev, "could not read '%s': %
m\n", name_loop->name
);
list_del(&name_loop->node);
free(name_loop);
}
list_del(&name_loop->node);
free(name_loop);
}