man2html - format a manual page in html
man2html [options] [file]
man2html converts a manual page as found in
file (or stdin, in
case no file argument, or the argument "-", is given) from man-style
nroff into html, and prints the result on stdout. It does support tbl but does
not know about eqn. The exit status is 0. If something goes wrong, an error
page is printed on stdout.
This can be used as a stand-alone utility, but is mainly intended as an
auxiliary, to enable users to browse their man pages using a html browser like
lynx(1),
xmosaic(1) or
netscape(1).
The main part of
man2html is the troff-to-html engine written by Richard
Verhoeven (
[email protected]). It adds hyperlinks for the following constructs:
(The first of these can be tuned by options - see below.) No lookup is done -
the links generated need not exist. Also an index with internal hyperlinks to
the various sections is generated, so that it is easier to find one's way in
large man pages like
bash(1).
When reading from stdin, it is not always clear how to do .so expansion. The -D
option allows a script to define the working directory.
- -D pathname
- Strip the last two parts from the pathname, and do a
chdir( dir) before starting the conversion.
The -E option allows the easy generation of error messages from a cgi script.
- -E string
- Output an error page containing the given error
message.
The general form of a hyperlink generated for a man page reference is
- <method:cgipath><man2htmlpath><separator><manpage>
with a default as shown above. The parts of this hyperlink are set using the
various options.
- -h
- Set method:cgipath to http://localhost.
-
-H host[.domain][:port]
- Set method:cgipath to http://host.domain:port.
- -l
- Set method:cgipath to lynxcgi:/usr/lib.
-
-L dir
- Set method:cgipath to lynxcgi:dir.
-
-M man2htmlpath
- Set the man2htmlpath to use. The default is
/cgi-bin/man/man2html.
- -p
- Set separator to '/'.
- -q
- Set separator to '?'. This is the default.
- -r
- Use relative html paths, instead of cgi-bin paths.
On a machine without running
httpd, one can use
lynx to browse the
man pages, using the lynxcgi method. When some http daemon is running, lynx,
or any other browser, can be used to browse the man pages, using the http
method. The option -l (for `lynxcgi') selects the former behaviour. With it,
the default cgipath is
/usr/lib.
In general, a cgi script can be called by
- <path_to_script>/<more_path>?<query>
and the environment variables PATH_INFO and QUERY_STRING will be set to
<more_path> and <query>, respectively. Since lynxcgi does not
handle the PATH_INFO part, we generate hyperlinks with `?' as a separator by
default. The option -p (for `path') selects '/' as a separator, while the
option -q (for `query') selects '?' as a separator.
The option -H
host will specify the host to use (instead of
localhost). A cgi script could use
- man2html -H $SERVER_NAME
if the variable SERVER_NAME is set. This would allow your machine to act as a
server and export man pages.
There are many heuristics. The output will not always be perfect. The lynxcgi
method will not work if lynx was compiled without selecting support for it.
There may be problems with security.
Richard Verhoeven was the original author of
man2html. Michael Hamilton
and Andries Brouwer subsequently improved on it. Federico Lucifredi
<
[email protected]> is the current maintainer.
lynx(1),
man(1),
hman(1)