diff options
| author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-11-08 20:08:26 +0100 |
|---|---|---|
| committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2011-11-09 17:42:02 +0100 |
| commit | 38300043496ba07e71b84e4ab10eeec40d2b9e66 (patch) | |
| tree | da68483f282ec2b51e655143421ed29766a77561 /doc/fixnavi.pl | |
| parent | 2ddab351f06a20f29a44d83102587e79263b42b1 (diff) | |
| download | qt-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-x | doc/fixnavi.pl | 33 |
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; } |
