summaryrefslogtreecommitdiff
path: root/src/udev/udev-rules.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2023-03-22 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2023-03-27 10:00:30 +0000
commit9b419eb0b813868ed442e239661f78f8a92222ae (patch)
tree98d10c9d7eccc0709804b1831fb0bdd77a8d58f5 /src/udev/udev-rules.c
parent3b948231028395b187292a795c2be03546422d44 (diff)
downloadsystemd-9b419eb0b813868ed442e239661f78f8a92222ae.tar.gz
udev-rules: move udev_check_rule_line() invocation
Move udev_check_rule_line() invocation from udev_rule_file_get_issues() to udev_rules_parse_file(), invoke udev_check_rule_line() only when udev_rules_parse_file() is called by udevadm verify. Subsequent commits are going to perform more checks invoked from udev_rules_parse_file().
Diffstat (limited to 'src/udev/udev-rules.c')
-rw-r--r--src/udev/udev-rules.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 1d1c27edd0..23dd31229d 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -1358,7 +1358,7 @@ static void udev_check_rule_line(UdevRuleLine *line) {
udev_check_conflicts_duplicates(line);
}
-int udev_rules_parse_file(UdevRules *rules, const char *filename, UdevRuleFile **ret) {
+int udev_rules_parse_file(UdevRules *rules, const char *filename, bool extra_checks, UdevRuleFile **ret) {
_cleanup_(udev_rule_file_freep) UdevRuleFile *rule_file = NULL;
_cleanup_free_ char *continuation = NULL, *name = NULL;
_cleanup_fclose_ FILE *f = NULL;
@@ -1469,6 +1469,10 @@ int udev_rules_parse_file(UdevRules *rules, const char *filename, UdevRuleFile *
rule_resolve_goto(rule_file);
+ if (extra_checks)
+ LIST_FOREACH(rule_lines, line, rule_file->rule_lines)
+ udev_check_rule_line(line);
+
if (ret)
*ret = rule_file;
@@ -1479,9 +1483,6 @@ int udev_rules_parse_file(UdevRules *rules, const char *filename, UdevRuleFile *
unsigned udev_rule_file_get_issues(UdevRuleFile *rule_file) {
assert(rule_file);
- LIST_FOREACH(rule_lines, line, rule_file->rule_lines)
- udev_check_rule_line(line);
-
return rule_file->issues;
}
@@ -1513,7 +1514,7 @@ int udev_rules_load(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing
return log_debug_errno(r, "Failed to enumerate rules files: %m");
STRV_FOREACH(f, files) {
- r = udev_rules_parse_file(rules, *f, NULL);
+ r = udev_rules_parse_file(rules, *f, /* extra_checks = */ false, NULL);
if (r < 0)
log_debug_errno(r, "Failed to read rules file %s, ignoring: %m", *f);
}