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.
78 lines
1.7 KiB
78 lines
1.7 KiB
#! /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
|