diff options
author | Damien Miller <djm@mindrot.org> | 2001-04-16 10:41:46 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2001-04-16 10:41:46 +1000 |
commit | 897741eeaa0ebb5e2ce10a6b0ada8f3e55d22777 (patch) | |
tree | 5cab7cc53a9910aee7e932c74ee56555a30621ba /contrib | |
parent | 206941fdd88031e76da1e2aa0b5dd3b8d1d5d38b (diff) |
- (djm) Convert mandoc manpages to man automatically. Patch from Mark D.
Roth <roth+openssh@feep.net>
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/mdoc2man.pl | 364 |
1 files changed, 0 insertions, 364 deletions
diff --git a/contrib/mdoc2man.pl b/contrib/mdoc2man.pl deleted file mode 100644 index 719e1e0c..00000000 --- a/contrib/mdoc2man.pl +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/perl -### -### Quick usage: mdoc2man.pl < mdoc_manpage.8 > doc_manpage.8 -### -### -### Copyright (c) 2001 University of Illinois Board of Trustees -### Copyright (c) 2001 Mark D. Roth -### All rights reserved. -### -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. -### 3. All advertising materials mentioning features or use of this software -### must display the following acknowledgement: -### This product includes software developed by the University of -### Illinois at Urbana, and their contributors. -### 4. The University nor the names of their -### contributors may be used to endorse or promote products derived from -### this software without specific prior written permission. -### -### THIS SOFTWARE IS PROVIDED BY THE TRUSTEES AND CONTRIBUTORS ``AS IS'' AND -### ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -### ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OR CONTRIBUTORS BE LIABLE -### FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -### DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -### OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -### HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -### LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -### OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -### SUCH DAMAGE. -### - -use strict; - -my ($name, $date, $id); -my ($line); -my ($optlist, $nospace, $enum, $synopsis); - - -$optlist = 0; ### 1 = bullet, 2 = enum, 3 = tag -$nospace = 0; -$synopsis = 0; - -while ($line = <STDIN>) -{ - if ($line !~ /^\./) - { - print $line; - next; - } - - $line =~ s/^\.//; - - next - if ($line =~ m/\\"/); - - $line = ParseMacro($line); - print($line) - if (defined $line); -} - - - -sub ParseMacro # ($line) -{ - my ($line) = @_; - my (@words, $retval, $option, $parens, $arg); - - @words = split(/\s+/, $line); - $retval = ''; - $option = 0; - $parens = 0; - $arg = 0; - -# print('@words = ', scalar(@words), ': ', join(' ', @words), "\n"); - - while ($_ = shift @words) - { -# print "WORD: $_\n"; - - next - if (/^(Li|Pf|X[oc])$/); - - if (/^Ns/) - { - $nospace = 1 - if (! $nospace); - $retval =~ s/ $//; - next; - } - - if (/^No/) - { - $retval =~ s/ $//; - $retval .= shift @words; - next; - } - - if (/^Dq$/) { - $retval .= '``' . (shift @words) . '\'\''; - $nospace = 1 - if (! $nospace && $words[0] =~ m/^[\.,]/); - next; - } - - if (/^(Sq|Ql)$/) { - $retval .= '`' . (shift @words) . '\''; - $nospace = 1 - if (! $nospace && $words[0] =~ m/^[\.,]/); - next; - } - - $retval .= ' ' - if (! $nospace && $retval ne '' && $retval !~ m/[\n ]$/); - $nospace = 0 - if ($nospace == 1); - - if (/^Dd$/) { - $date = join(' ', @words); - return undef; - } - - if (/^Dt$/) { - $id = join(' ', @words); - return undef; - } - - if (/^Os$/) { - $retval .= '.TH ' - . $id - . " \"$date\" \"" - . join(' ', @words) - . "\""; - last; - } - - if (/^Sh$/) { - $retval .= '.SH'; - if ($words[0] eq 'SYNOPSIS') - { - $synopsis = 1; - } - else - { - $synopsis = 0; - } - next; - } - - if (/^Xr$/) { - $retval .= '\\fB' . (shift @words) . - '\\fR(' . (shift @words) . ')' - . (shift @words); - last; - } - - if (/^Nm$/) { - $name = shift @words - if (@words > 0); - $retval .= ".br\n" - if ($synopsis); - $retval .= "\\fB$name\\fR"; - $nospace = 1 - if (! $nospace && $words[0] =~ m/^[\.,]/); - next; - } - - if (/^Nd$/) { - $retval .= '\\-'; - next; - } - - if (/^Fl$/) { - $retval .= '\\fB\\-' . (shift @words) . '\\fR'; - $nospace = 1 - if (! $nospace && $words[0] =~ m/^[\.,]/); - next; - } - - if (/^Ar$/) { - $retval .= '\\fI'; - if (! defined $words[0]) - { - $retval .= 'file ...\\fR'; - } - $arg = 1; - $nospace = 1 - if (! $nospace); - next; - } - - if (/^Cm$/) { - $retval .= '\\fB' . (shift @words) . '\\fR'; - next; - } - - if (/^Op$/) { - $option = 1; - $nospace = 1 - if (! $nospace); - $retval .= '['; - next; - } - - if (/^Oo$/) { - $retval .= "[\\c\n"; - next; - } - - if (/^Oc$/) { - $retval .= ']'; - next; - } - - if (/^Pp$/) { - if ($optlist) { - $retval .= "\n"; - } else { - $retval .= '.LP'; - } - next; - } - - if (/^Ss$/) { - $retval .= '.SS'; - next; - } - - if (/^Pa$/ && ! $option) { - $retval .= '\\fI'; - $retval .= '\\&' - if ($words[0] =~ m/^\./); - $retval .= (shift @words) . '\\fR'; - $nospace = 1 - if (! $nospace && $words[0] =~ m/^[\.,]/); - next; - } - - if (/^Dv$/) { - $retval .= '.BR'; - next; - } - - if (/^(Em|Ev)$/) { - $retval .= '.IR'; - next; - } - - if (/^Pq$/) { - $retval .= '('; - $nospace = 1; - $parens = 1; - next; - } - - if (/^(S[xy])$/) { - $retval .= '.B ' . join(' ', @words); - last; - } - - if (/^Ic$/) - { - $retval .= '\\fB'; - while (defined $words[0] - && $words[0] !~ m/^[\.,]/) - { - $retval .= shift @words; - $retval .= ' ' - if (! $nospace); - } - $retval =~ s/ $//; - $retval .= '\\fR'; - $retval .= shift @words - if (defined $words[0]); - last; - } - - if (/^Bl$/) { - if ($words[0] eq '-bullet') { - $optlist = 1; - } elsif ($words[0] eq '-enum') { - $optlist = 2; - $enum = 0; - } elsif ($words[0] eq '-tag') { - $optlist = 3; - } - last; - } - - if (/^El$/) { - $optlist = 0; - next; - } - - if ($optlist && /^It$/) { - if ($optlist == 1) { - # bullets - $retval .= '.IP \\(bu'; - next; - } - - if ($optlist == 2) { - # enum - $retval .= '.IP ' . (++$enum) . '.'; - next; - } - - if ($optlist == 3) { - # tags - $retval .= ".TP\n"; - if ($words[0] =~ m/^(Pa|Ev)$/) - { - shift @words; - $retval .= '.B'; - } - next; - } - - next; - } - - if (/^Sm$/) { - if ($words[0] eq 'off') { - $nospace = 2; - } elsif ($words[0] eq 'on') { - $retval .= "\n"; - $nospace = 0; - } - shift @words; - next; - } - - $retval .= "$_"; - } - - return undef - if ($retval eq '.'); - - $retval =~ s/^\.([^a-zA-Z])/$1/; - $retval =~ s/ $//; - - $retval .= ')' - if ($parens == 1); - - $retval .= ']' - if ($option == 1); - - $retval .= '\\fR' - if ($arg); - - $retval .= '\\c' - if ($nospace && $retval ne '' && $retval !~ m/\n$/); - - $retval .= "\n" - if ($retval ne '' && $retval !~ m/\n$/); - - return $retval; -} |