fflush(f);
assert_se(rules = udev_rules_new(RESOLVE_NAME_EARLY));
- r = udev_rules_parse_file(rules, filename, NULL);
+ r = udev_rules_parse_file(rules, filename, /* extra_checks = */ false, NULL);
log_info_errno(r, "Parsing %s: %m", filename);
assert_se(r >= 0 || /* OK */
r == -ENOBUFS); /* line length exceeded */
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;
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;
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;
}
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);
}
_ESCAPE_TYPE_INVALID = -EINVAL,
} UdevRuleEscapeType;
-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);
unsigned udev_rule_file_get_issues(UdevRuleFile *rule_file);
UdevRules* udev_rules_new(ResolveNameTiming resolve_name_timing);
int udev_rules_load(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing);
UdevRuleFile *file;
int r;
- r = udev_rules_parse_file(rules, fname, &file);
+ r = udev_rules_parse_file(rules, fname, /* extra_checks = */ true, &file);
if (r < 0)
return log_error_errno(r, "Failed to parse rules file %s: %m", fname);
if (r == 0) /* empty file. */