summaryrefslogtreecommitdiff
path: root/doc/fixnavi.pl
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-11-08 20:08:26 +0100
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-11-09 17:42:02 +0100
commit38300043496ba07e71b84e4ab10eeec40d2b9e66 (patch)
treeda68483f282ec2b51e655143421ed29766a77561 /doc/fixnavi.pl
parent2ddab351f06a20f29a44d83102587e79263b42b1 (diff)
downloadqt-creator-38300043496ba07e71b84e4ab10eeec40d2b9e66.tar.gz
don't get confused by conditionals outside page header
this adds some state variables, localizes some variables, adds some assertions and reshuffles some code for clarity. Change-Id: Idd061fe70e953d3659e7b2b80735d5ec757d5050 Reviewed-by: hjk <qthjk@ovi.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'doc/fixnavi.pl')
-rwxr-xr-xdoc/fixnavi.pl33
1 files changed, 20 insertions, 13 deletions
diff --git a/doc/fixnavi.pl b/doc/fixnavi.pl
index e2e4497cf4..7e0e584f13 100755
--- a/doc/fixnavi.pl
+++ b/doc/fixnavi.pl
@@ -44,33 +44,39 @@ int(@files) or die "usage: $0 [-D<define>]... <qdoc-file>...\n";
my @toc = ();
my %title2page = ();
my $doctitle = "";
-my $curpage = "";
-my $intoc = 0;
my %prev_skips = ();
my %next_skips = ();
my %define_skips = ();
my %polarity_skips = ();
-my $prev_skip = "";
-my $next_skip = "";
-my $define_skip = "";
-my $polarity_skip = 0;
for my $file (@files) {
- my $skipping = 0; # no nested ifs!
+ my ($curpage, $inhdr, $intoc, $inif) = ("", 0, 0, 0);
+ my ($define_skip, $polarity_skip, $skipping, $prev_skip, $next_skip) = ("", 0, 0, "", "");
open FILE, $file or die "File $file cannot be opened.\n";
while (<FILE>) {
if (/^\h*\\if\h+defined\h*\(\h*(\H+)\h*\)/) {
+ die "Nested \\if at $file:$.\n" if ($inif);
+ $inif = 1;
$skipping = !defined($defines{$1});
- if (!$intoc) {
+ if ($inhdr) {
$define_skip = $1;
$polarity_skip = $skipping;
}
} elsif (/^\h*\\else/) {
+ die "Unmatched \\else in $file:$.\n" if (!$inif);
$skipping = 1 - $skipping;
} elsif (/^\h*\\endif/) {
+ die "Unmatched \\endif in $file:$.\n" if (!$inif);
+ $inif = 0;
$skipping = 0;
} elsif (keys(%title2page) == 1 && /^\h*\\list/) {
$intoc++;
- } elsif (!$intoc) {
+ } elsif ($intoc) {
+ if (/^\h*\\endlist/) {
+ $intoc--;
+ } elsif (!$skipping && /^\h*\\o\h+\\l\h*{(.*)}$/) {
+ push @toc, $1;
+ }
+ } elsif ($inhdr) {
if ($skipping && /^\h*\\previouspage\h+(\H+)/) {
$prev_skip = $1;
} elsif ($skipping && /^\h*\\nextpage\h+(\H+)/) {
@@ -91,15 +97,16 @@ for my $file (@files) {
$title2page{$1} = $curpage;
$doctitle = $1 if (!$doctitle);
$curpage = "";
+ $inhdr = 0;
}
} else {
- if (/^\h*\\endlist/) {
- $intoc--;
- } elsif (!$skipping && /^\h*\\o\h+\\l\h*{(.*)}$/) {
- push @toc, $1;
+ if (/^\h*\\contentspage\b/) {
+ $inhdr = 1;
}
}
}
+ die "Missing \\title in $file\n" if ($inhdr);
+ die "Unclosed TOC in $file\n" if ($intoc);
close FILE;
}