⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 html2man.in

📁 网络时间协议NTP 源码 版本v4.2.0b 该源码用于linux平台下
💻 IN
字号:
#! @PATH_PERL@ -w## html2man: Converts the NTP HTML documentation to man page format## This file require the Perl HTML::TokeParser module:# http://search.cpan.org/search?module=HTML::TokeParser## Depending on where this is run from, you might need to modify $MANDIR below.## Hacked together by Peter Boettcher <boettcher@ll.mit.edu># Last modified: <Mon Jan 28 17:24:38 2002 by pwb>require HTML::TokeParser;# use strict;		# I can dream...$MANDIR = "./man";# HTML files to convert.  Also include per-file info here: #   name of man page, man section, 'see also' section%manfiles = (	     'ntpd' => ['ntpd', 8, 'ntp.conf(5), ntpq(8), ntpdc(8)'],	     'ntpq' => ['ntpq', 8, 'ntpd(8), ntpdc(8)'],	     'ntpdate' => ['ntpdate', 8, 'ntpd(8)'],	     'ntpdc' => ['ntpdc', 8, 'ntpd(8)'],	     'ntptime' => ['ntpdtime', 8, 'ntpd(8), ntpdate(8)'],	     'ntptrace' => ['ntptrace', 8, 'ntpd(8)'],	     'keygen' => ['ntp-keygen', 8, 'ntpd(8), ntp_auth(5)'],	     'confopt' => ['ntp.conf', 5, 'ntpd(8)'],	     'authopt' => ['ntp_auth', 5, 'ntp.conf(5), ntpd(8)'],	     'monopt' => ['ntp_mon', 5, 'ntp.conf(5)'],	     'accopt' => ['ntp_acc', 5, 'ntp.conf(5)'],	     'clockopt' => ['ntp_clock', 5, 'ntp.conf(5)'],	     'miscopt' => ['ntp_misc', 5, 'ntp.conf(5)']);# Disclaimer to go in SEE ALSO section of the man page$seealso_disclaimer = 'These man pages are automatically hacked from the main NTP ' .    'documentation pages, which are maintained in HTML format.  These files are ' .    'included in the NTP source distribution.  If you installed NTP from a binary ' .    'package, or it came pre-installed on your system, chances are the documentation ' .    'was also included in the usual place for your system.  The HTML files are more ' .    'correct and complete than these man pages, which are provided for your reference ' .    'only.';# Disclaimer to go right at the top$top_disclaimer = 'This file was automatically generated from HTML source, and may be ' .    'incorrect.  See the SEE ALSO section at the end of this file for more info';mkdir $MANDIR, 0777;mkdir "$MANDIR/man8", 0777;mkdir "$MANDIR/man5", 0777;# Do the actual processingforeach $file (keys %manfiles) {    process($file);}# End of main function# Do the real worksub process {    my($filename) = @_;    $fileinfo = $manfiles{$filename};    $p = HTML::TokeParser->new("$filename.html") || die "Can't open $filename.html: $!";    open(MANOUT, ">$MANDIR/man$fileinfo->[1]/$fileinfo->[0].$fileinfo->[1]")	|| die "Can't open: $!";    $p->get_tag("title");    $name = $p->get_text("/title");    $p->get_tag("hr");		# Skip past image and quote, hopefully    # Setup man header    print MANOUT ".TH " . $fileinfo->[0] . " " . $fileinfo->[1] .  "\n";    print MANOUT ".UC 4\n";    print MANOUT ".SH NAME\n";    $pat = $fileinfo->[0];    if ($name =~ /$pat/) {    } else {	# Add the manpage name, if not in the HTML title already	print MANOUT "$fileinfo->[0] - ";    }    print MANOUT "$name\n\n";    print MANOUT "$top_disclaimer\n";    # Now start scanning.  We basically print everything after translating some tags.    # $token->[0] has "T", "S", "E" for Text, Start, End    # $token->[1] has the tag name, or text (for "T" case)    #  Theres lots more in the world of tokens, but who cares?    while (my $token = $p->get_token) {	if($token->[0] eq "T") {	    my $text = $token->[1];	    if($tag) {		$text =~ s/^[\n ]*//;		$text =~ s/[\n ]*$/ /;	    }	    $text =~ s/&nbsp\;/ /g;	    $text =~ s/^\./\\./;	    print MANOUT "$text";	    $tag = 0;	}	if($token->[0] eq "S") {	    if($token->[1] eq "h4") {		my $text = uc($p->get_trimmed_text("/h4"));		print MANOUT ".SH $text\n";	    }	    if($token->[1] eq "tt") {		push @fontstack, "tt";		print MANOUT "\\fB";	    }	    if($token->[1] eq "i") {		push @fontstack, "i";		print MANOUT "\\fI";	    }	    if($token->[1] eq "address") {		my $text = $p->get_trimmed_text("/address");		print MANOUT "\n.SH AUTHOR\n$text\n";	    }	    if($token->[1] eq "dt") {		$tmp = $deflevel-4;		print MANOUT "\n.RS $tmp\n";		$tag = 1;	    }	    if($token->[1] eq "dd") {		print MANOUT "\n.RS $deflevel\n";		$tag = 1;	    }	    if($token->[1] eq "dl") {		$deflevel+=4;	    }	}	elsif($token->[0] eq "E") {	    if($token->[1] eq "dd") {		print MANOUT "\n.RE\n";		$tag = 1;	    }	    if($token->[1] eq "tt") {		$f = pop @fontstack;		if($f ne "tt") {		    warn "Oops, mismatched font!  Trying to continue\n";		}		if ($#fontstack < 0) { $fontswitch = "\\fR"; }		elsif ($fontstack[$#fontstack] eq "tt") { $fontswitch = "\\fB"; }		else { $fontswitch = "\\fI"; }		print MANOUT "$fontswitch";	    }	    if($token->[1] eq "i") {		$f = pop @fontstack;		if($f ne "i") {		    warn "Oops, mismatched font!  Trying to continue\n";		}		if ($#fontstack < 0) { $fontswitch = "\\fR"; }		elsif ($fontstack[$#fontstack] eq "tt") { $fontswitch = "\\fB"; }		else { $fontswitch = "\\fI"; }		print MANOUT "$fontswitch";	    }	    if($token->[1] eq "dl") {		$deflevel-=4;	    }	    if($token->[1] eq "dt") {		print MANOUT "\n.RE";		$tag = 1;	    }	}    }    print MANOUT ".SH SEE ALSO\n\n";    print MANOUT "$fileinfo->[2]\n\n";    print MANOUT "$seealso_disclaimer\n";    close(MANOUT);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -