12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #! /usr/bin/perl
- # A script to scan PCRE'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>)
- {
- $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;
- }
- }
- else
- {
- if (/\\[^ef]|\\f[^IBP]/)
- {
- printf "Bad backslash in line $line of $file\n";
- $yield = 1;
- }
- }
- }
-
- close(IN);
- }
-
- exit $yield;
- # End
|