Blame CheckMan

Packit 78a954
#! /usr/bin/perl
Packit 78a954
Packit 78a954
# A script to scan PCRE's man pages to check for typos in the control
Packit 78a954
# sequences. I use only a small set of the available repertoire, so it is 
Packit 78a954
# straightforward to check that nothing else has slipped in by mistake. This
Packit 78a954
# script should be called in the doc directory.
Packit 78a954
Packit 78a954
$yield = 0;
Packit 78a954
Packit 78a954
while (scalar(@ARGV) > 0)
Packit 78a954
  {
Packit 78a954
  $line = 0; 
Packit 78a954
  $file = shift @ARGV;
Packit 78a954
    
Packit 78a954
  open (IN, $file) || die "Failed to open $file\n";
Packit 78a954
  
Packit 78a954
  while (<IN>)
Packit 78a954
    {  
Packit 78a954
    $line++; 
Packit 78a954
    if (/^\s*$/)
Packit 78a954
      {
Packit 78a954
      printf "Empty line $line of $file\n";
Packit 78a954
      $yield = 1;  
Packit 78a954
      }   
Packit 78a954
    elsif (/^\./)
Packit 78a954
      {
Packit 78a954
      if (!/^\.\s*$|
Packit 78a954
            ^\.B\s+\S| 
Packit 78a954
            ^\.TH\s\S|
Packit 78a954
            ^\.SH\s\S|
Packit 78a954
            ^\.SS\s\S|
Packit 78a954
            ^\.TP(?:\s?\d+)?\s*$|
Packit 78a954
            ^\.SM\s*$|
Packit 78a954
            ^\.br\s*$| 
Packit 78a954
            ^\.rs\s*$| 
Packit 78a954
            ^\.sp\s*$| 
Packit 78a954
            ^\.nf\s*$| 
Packit 78a954
            ^\.fi\s*$| 
Packit 78a954
            ^\.P\s*$| 
Packit 78a954
            ^\.PP\s*$| 
Packit 78a954
            ^\.\\"(?:\ HREF)?\s*$|
Packit 78a954
            ^\.\\"\sHTML\s<a\shref="[^"]+?">\s*$|
Packit 78a954
            ^\.\\"\sHTML\s<a\sname="[^"]+?"><\/a>\s*$|
Packit 78a954
            ^\.\\"\s<\/a>\s*$|
Packit 78a954
            ^\.\\"\sJOINSH\s*$|
Packit 78a954
            ^\.\\"\sJOIN\s*$/x  
Packit 78a954
         )
Packit 78a954
        {
Packit 78a954
        printf "Bad control line $line of $file\n";
Packit 78a954
        $yield = 1;
Packit 78a954
        }
Packit 78a954
      }
Packit 78a954
    else
Packit 78a954
      {
Packit 78a954
      if (/\\[^ef]|\\f[^IBP]/)
Packit 78a954
        {
Packit 78a954
        printf "Bad backslash in line $line of $file\n";  
Packit 78a954
        $yield = 1; 
Packit 78a954
        } 
Packit 78a954
      }   
Packit 78a954
    }
Packit 78a954
     
Packit 78a954
  close(IN);   
Packit 78a954
  }
Packit 78a954
  
Packit 78a954
exit $yield;
Packit 78a954
# End