#!/usr/bin/perl use strict; use warnings; my $exit_code = 0; sub report { my ($msg) = @_; print STDERR "$ARGV:$.: $msg\n"; $exit_code = 1; } my $line_length = 0; my $in_section = 0; my $section_header = ""; while (my $line = <>) { if (($line =~ /^\+?$/) || ($line =~ /^\[.*\]$/) || ($line =~ /^ifdef::/)) { $line_length = 0; } elsif ($line =~ /^[^-.]/) { $line_length = length($line); } elsif (($line =~ /^-{3,}$/) || ($line =~ /^\.{3,}$/)) { if ($in_section) { if ($line eq $section_header) { $in_section = 0; } next; } if ($line_length == 0) { $in_section = 1; $section_header = $line; next; } if (($line_length != 0) && (length($line) != $line_length)) { report("section delimiter not preceded by an empty line"); } $line_length = 0; } } if ($in_section) { report("section not finished"); } exit $exit_code;