"Fossies" - the Fresh Open Source Software Archive

Member "pcre-8.42/CleanTxt" (31 Jan 2014, 2941 Bytes) of package /linux/misc/pcre-8.42.tar.bz2:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #! /usr/bin/perl -w
    2 
    3 # Script to take the output of nroff -man and remove all the backspacing and
    4 # the page footers and the screen commands etc so that it is more usefully
    5 # readable online. In fact, in the latest nroff, intermediate footers don't
    6 # seem to be generated any more.
    7 
    8 $blankcount = 0;
    9 $lastwascut = 0;
   10 $firstheader = 1;
   11 
   12 # Input on STDIN; output to STDOUT.
   13 
   14 while (<STDIN>)
   15   {
   16   s/\x1b\[\d+m//g;   # Remove screen controls "ESC [ number m"
   17   s/.\x8//g;         # Remove "char, backspace"
   18 
   19   # Handle header lines. Retain only the first one we encounter, but remove
   20   # the blank line that follows. Any others (e.g. at end of document) and the
   21   # following blank line are dropped.
   22 
   23   if (/^PCRE(\w*)\(([13])\)\s+PCRE\1\(\2\)$/)
   24     {
   25     if ($firstheader)
   26       {
   27       $firstheader = 0;
   28       print;
   29       $lastprinted = $_;
   30       $lastwascut = 0;
   31       }
   32     $_=<STDIN>;       # Remove a blank that follows
   33     next;
   34     }
   35 
   36   # Count runs of empty lines
   37 
   38   if (/^\s*$/)
   39     {
   40     $blankcount++;
   41     $lastwascut = 0;
   42     next;
   43     }
   44 
   45   # If a chunk of lines has been cut out (page footer) and the next line
   46   # has a different indentation, put back one blank line.
   47 
   48   if ($lastwascut && $blankcount < 1 && defined($lastprinted))
   49     {
   50     ($a) = $lastprinted =~ /^(\s*)/;
   51     ($b) = $_ =~ /^(\s*)/;
   52     $blankcount++ if ($a ne $b);
   53     }
   54 
   55   # We get here only when we have a non-blank line in hand. If it was preceded
   56   # by 3 or more blank lines, read the next 3 lines and see if they are blank.
   57   # If so, remove all 7 lines, and remember that we have just done a cut.
   58 
   59   if ($blankcount >= 3)
   60     {
   61     for ($i = 0; $i < 3; $i++)
   62       {
   63       $next[$i] = <STDIN>;
   64       $next[$i] = "" if !defined $next[$i];
   65       $next[$i] =~ s/\x1b\[\d+m//g;   # Remove screen controls "ESC [ number m"
   66       $next[$i] =~ s/.\x8//g;         # Remove "char, backspace"
   67       }
   68 
   69     # Cut out chunks of the form <3 blanks><non-blank><3 blanks>
   70 
   71     if ($next[0] =~ /^\s*$/ &&
   72         $next[1] =~ /^\s*$/ &&
   73         $next[2] =~ /^\s*$/)
   74       {
   75       $blankcount -= 3;
   76       $lastwascut = 1;
   77       }
   78 
   79     # Otherwise output the saved blanks, the current, and the next three
   80     # lines. Remember the last printed line.
   81 
   82     else
   83       {
   84       for ($i = 0; $i < $blankcount; $i++) { print "\n"; }
   85       print;
   86       for ($i = 0; $i < 3; $i++)
   87         {
   88         $next[$i] =~ s/.\x8//g;
   89         print $next[$i];
   90         $lastprinted = $_;
   91         }
   92       $lastwascut = 0;
   93       $blankcount = 0;
   94       }
   95     }
   96 
   97   # This non-blank line is not preceded by 3 or more blank lines. Output
   98   # any blanks there are, and the line. Remember it. Force two blank lines
   99   # before headings.
  100 
  101   else
  102     {
  103     $blankcount = 2 if /^\S/ && !/^Last updated/ && !/^Copyright/ &&
  104       defined($lastprinted);
  105     for ($i = 0; $i < $blankcount; $i++) { print "\n"; }
  106     print;
  107     $lastprinted = $_;
  108     $lastwascut = 0;
  109     $blankcount = 0;
  110     }
  111   }
  112 
  113 # End