chiark / gitweb /
Commit upstream pcre-8.39.tar.bz2
[pcre3.git] / CheckMan
1 #! /usr/bin/perl
2
3 # A script to scan PCRE's man pages to check for typos in the control
4 # sequences. I use only a small set of the available repertoire, so it is 
5 # straightforward to check that nothing else has slipped in by mistake. This
6 # script should be called in the doc directory.
7
8 $yield = 0;
9
10 while (scalar(@ARGV) > 0)
11   {
12   $line = 0; 
13   $file = shift @ARGV;
14     
15   open (IN, $file) || die "Failed to open $file\n";
16   
17   while (<IN>)
18     {  
19     $line++; 
20     if (/^\s*$/)
21       {
22       printf "Empty line $line of $file\n";
23       $yield = 1;  
24       }   
25     elsif (/^\./)
26       {
27       if (!/^\.\s*$|
28             ^\.B\s+\S| 
29             ^\.TH\s\S|
30             ^\.SH\s\S|
31             ^\.SS\s\S|
32             ^\.TP(?:\s?\d+)?\s*$|
33             ^\.SM\s*$|
34             ^\.br\s*$| 
35             ^\.rs\s*$| 
36             ^\.sp\s*$| 
37             ^\.nf\s*$| 
38             ^\.fi\s*$| 
39             ^\.P\s*$| 
40             ^\.PP\s*$| 
41             ^\.\\"(?:\ HREF)?\s*$|
42             ^\.\\"\sHTML\s<a\shref="[^"]+?">\s*$|
43             ^\.\\"\sHTML\s<a\sname="[^"]+?"><\/a>\s*$|
44             ^\.\\"\s<\/a>\s*$|
45             ^\.\\"\sJOINSH\s*$|
46             ^\.\\"\sJOIN\s*$/x  
47          )
48         {
49         printf "Bad control line $line of $file\n";
50         $yield = 1;
51         }
52       }
53     else
54       {
55       if (/\\[^ef]|\\f[^IBP]/)
56         {
57         printf "Bad backslash in line $line of $file\n";  
58         $yield = 1; 
59         } 
60       }   
61     }
62      
63   close(IN);   
64   }
65   
66 exit $yield;
67 # End