#!/usr/local/bin/perl sub basename { $slash = rindex($_[0], "/"); $suffix = rindex($_[0], $_[1]); if ($suffix == -1) {$suffix=length($_[0])}; return substr($_[0], $slash+1, $suffix-$slash-1); } sub dirname { $slash = rindex($_[0], "/"); if ($slash == -1) {return "."}; return substr($_[0], 0, $slash); } sub DoHtml { $preformat = 0; $page = &basename($_[0], ".htm"); $dir = &dirname($_[0]); $sect = chop($dir); if ($sect == "n") { $sect = chop($dir) . $sect; }; $sect = "1"; $dir = &dirname($dir); $infile = $dir . "/" . $page . ".htm"; $outfile = $dir . "/" . $page . "." . $sect; print "\n*** $dir $sect $page *** \n"; open(INP,$infile) || die "Can't open '$infile' for reading: $!"; if (! &GetTitle($page,$sect)) { print "$infile: Did not find a valid
#i) {
s#^ *#\\*C\n.DS#i;
$preformat = 1;
return 1;
}
s#
##i;
if (m##) {return 2};
s###i;
s#<\!\-\-#.\\\" #;
s#\-\->##;
if (m#^$#i) {return 0};
s#
##i;
s#
##i;
if (&DoStrip($_)) {return 0}
&DoFont($_);
if (! &DoList($_)) {return 0};
if (! &DoSection($_)) {return 0}
&DoEscape($_);
&DoPara($_);
if (! $preformat) {
if (m/^$/) {return 0};
s#^[ \t]*##;
s#<.*>##g;
}
return 1;
}
sub DoEscape {
s#>#>#i;
s#<#<#i;
}
sub DoSection {
if (m#^ *Table of Contents *$#) {return 0};
if (m#^$#i) {return 0;}
s###i;
s#^.*#.SH #i;
s#^.*#.SH #i;
if (m#^$#i) {return 0};
s###ig;
s#^
$#.br#i;
s#
#\n.br\n#i;
return 1;
}
#================
# Paragraph breaks:
#
sub DoPara {
s/^
/.PP\n/;
s/
/\n.PP\n/g;
return;
}
#================
# Lists
#
-
#
sub DoList {
if (m#^ * *$#i) {return 0};
if (m#
- *$#i) {chop};
s#^ *
- #.LI \"#i;
s#
- #\n.LI \"#i;
s#
#\"#i;
if (m#^ * - *$#i) {return 0};
if (m#^ *
*$#i) {return 0};
if (m#^$#i) {return 0};
s#- ##i;
s#
##i;
s#^.* *$#.VL 4m#i;
s##\n.VL 4m\n#i;
s#^.*
*$#.LE#i;
s##\n.LE\n#i;
s#^.* *$#.RS#i;
s##\n.RS\n#i;
s#^.*
*$#.RE#i;
s#
#\n.RE\n#i;
s#^.* *$#.AL#i;
s##\n.AL\n#i;
s#^.*
*$#.LE#i;
s#
#\n.LE\n#i;
s###i;
s#^
$#.LI#i;
s#^ * *$#.LI#i;
s# #.LI\n#i;
return 1;
}
#================
# Font transitions:
# => \*L
# => \*O
# => \*W
# => \*O
#
sub DoFont {
s# * *_ * *#_#ig;
s# *# #ig;
s##\\*L#ig;
s##\\*O#ig;
s# * *_ * *#_#ig;
s# *# #ig;
s##\\*W#ig;
s##\\*O#ig;
s/^ */
/;
s/^
$/.PP/;
s/
/.PP\n/g;
s/
/.PP\n/g;
return;
}
#================
# Process all HTM file names
for $arg (@ARGV) {
$isTitle=0;
&DoHtml($arg);
}
exit