68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #! /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*$|
 | |
|             ^\.ti\s\S| 
 | |
|             ^\.SM\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  
 |