You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#! /usr/bin/perl
# A script to scan PCRE2's man pages to check for typos in the control # sequences. I use only a small set of the available repertoire, so it is # straightforward to check that nothing else has slipped in by mistake. This # script should be called in the doc directory.
$yield = 0;
while (scalar(@ARGV) > 0) { $line = 0; $file = shift @ARGV; open (IN, $file) || die "Failed to open $file\n"; while (<IN>) { $count = 0; $line++; if (/^\s*$/) { printf "Empty line $line of $file\n"; $yield = 1; } elsif (/^\./) { if (!/^\.\s*$| ^\.B\s+\S| ^\.TH\s\S| ^\.SH\s\S| ^\.SS\s\S| ^\.TP(?:\s?\d+)?\s*$| ^\.SM\s*$| ^\.br\s*$| ^\.rs\s*$| ^\.sp\s*$| ^\.nf\s*$| ^\.fi\s*$| ^\.P\s*$| ^\.PP\s*$| ^\.\\"(?:\ HREF)?\s*$| ^\.\\"\sHTML\s<a\shref="[^"]+?">\s*$| ^\.\\"\sHTML\s<a\sname="[^"]+?"><\/a>\s*$| ^\.\\"\s<\/a>\s*$| ^\.\\"\sJOINSH\s*$| ^\.\\"\sJOIN\s*$/x ) { printf "Bad control line $line of $file\n"; $yield = 1; } } elsif (/\\[^ef]|\\f[^IBP]/) { printf "Bad backslash in line $line of $file\n"; $yield = 1; } while (/\\f[BI]/g) { $count++; } while (/\\fP/g) { $count--; } if ($count != 0) { printf "Mismatching formatting in line $line of $file\n"; $yield = 1; } } close(IN); } exit $yield; # End
|