]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-rules: log the first line number when continued
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 10 Jan 2025 18:45:38 +0000 (03:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 23 Jan 2025 13:23:45 +0000 (22:23 +0900)
src/udev/udev-rules.c
test/units/TEST-17-UDEV.11.sh

index 6c5c0f4533eacde2eb60768dd5e17c7c9455e4eb..29c8c37c290783e3350e28cde57e8d2c1c5842ad 100644 (file)
@@ -1631,10 +1631,8 @@ static void udev_check_rule_line(UdevRuleLine *line) {
 
 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_free_ char *name = NULL;
         _cleanup_fclose_ FILE *f = NULL;
-        bool ignore_line = false;
-        unsigned line_nr = 0;
         struct stat st;
         int r;
 
@@ -1685,6 +1683,9 @@ int udev_rules_parse_file(UdevRules *rules, const char *filename, bool extra_che
 
         LIST_APPEND(rule_files, rules->rule_files, rule_file);
 
+        _cleanup_free_ char *continuation = NULL;
+        unsigned line_nr = 0, current_line_nr = 0;
+        bool ignore_line = false;
         for (;;) {
                 _cleanup_free_ char *buf = NULL;
                 size_t len;
@@ -1696,7 +1697,10 @@ int udev_rules_parse_file(UdevRules *rules, const char *filename, bool extra_che
                 if (r == 0)
                         break;
 
-                line_nr++;
+                current_line_nr++;
+                if (!continuation)
+                        line_nr = current_line_nr;
+
                 line = skip_leading_chars(buf, NULL);
 
                 /* Lines beginning with '#' are ignored regardless of line continuation. */
index 8413d3c189868cbf9c4a689964626b3de25a79d5..c0d87b7151c10ed0ea4334248229a38da4b5ffe2 100755 (executable)
@@ -174,7 +174,7 @@ assert_0 "${rules}"
 printf 'RUN+="/bin/true"%8176s\\\n #\n' ' ' ' ' >"${rules}"
 echo >>"${rules}"
 cat >"${exp}" <<EOF
-${rules}:5 Line is too long, ignored.
+${rules}:1 Line is too long, ignored.
 ${rules}: udev rules check failed.
 EOF
 assert_1 "${rules}"