It turns out that the line number counting was also broken (even on
files without multiple blanks), since the body of the while inside
the nextline subroutine would not be executed for a blank.
I guess the subroutine was intended to skip comments and blanks, but
since we use blanks to recognize the end of a section, I changed it
to only skip comments.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
my $lineno = 0;
my @lines = split(/\n/, $raw);
my $nextline = sub {
- while (my $line = shift @lines) {
+ while (defined(my $line = shift @lines)) {
$lineno++;
- return $line if $line !~ /^\s*(?:#|$)/;
+ return $line if ($line !~ /^\s*#/);
}
};
- while (my $line = &$nextline()) {
+ while (@lines) {
+ my $line = $nextline->();
+ next if !$line;
+
my $errprefix = "file $filename line $lineno";
my ($type, $sectionId, $errmsg, $config) = $class->parse_section_header($line);