'\" t .\" Title: manlifter .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 02/18/2024 .\" Manual: Documentation Tools .\" Source: manlifter .\" Language: English .\" .TH "MANLIFTER" "1" "02/18/2024" "manlifter" "Documentation Tools" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" manlifter \- mass\-conversion script and test harness for doclifter .SH "SYNOPSIS" .HP \w'\fBmanlifter\fR\ 'u \fBmanlifter\fR [\-d\ \fIoption\fR] [\-e] [\-f\ \fIlistfile\fR] [\-h] [\-I\ \fImandir\fR] [\-m] [\-M] [\-o\ \fIoutdir\fR] [\-p\ \fIpatch\-directory\fR] [\-P] [\-q] [\-v] [\-s\ \fIsection\fR] [\-X\ \fIexclude\fR] \fIname\fR... .HP \w'\fBmanlifter\fR\ 'u \fBmanlifter\fR [\-S] .SH "DESCRIPTION" .PP \fBmanlifter\fR is a script that sequences \fBdoclifter\fR(1) to convert an entire manual\-page tree to XML\-Docbook, optionally also generating HTML from the XML\&. Another use is as a torture\-test tool for doclifter; it logs errors to standard output and collects timings\&. .PP Called without any file arguments, manlifter tries to convert all eligible man pages installed on the system, placing the resulting xml files under xmlman in the current directory\&. Each successfully translated page foo\&.N is copied to manN/foo\&.xml beneath the output directory, regardless of what source directory it came from\&. .PP A manual page is considered ineligible for batch conversion if it contains text indicating it has been generated from DocBook masters of from Doxygen\&. .PP For each source file examined, if the destination file exists and is newer than the source, the conversion is skipped; thus, incremental runs of \fBmanlifter\fR do the least work needed to keep the target XML tree up to date\&. Likewise, in \-h mode derived HTML files are only made when necessary\&. .PP Stub pages that are just \fB\&.so\fR redirections are translated to corresponding symlinks of XML files (and, with \-h, HTML files)\&. .PP \fBmanlifter\fR may also be called with a single file argument, which is interpreted as the stem name of a potential manual page\&. \fBmanlifter\fR then searches all selected manual sections for a matching page and attempts to convert it\&. In this case, a copy of the man page and the converted version are dropped immediately beheath the output directory, with the names foobar\&.man and foobar\&.man\&.xml, respectively\&. This mode is normally only of interest only to \fBdoclifter\fR developers for debugging that program\&. .PP In either of the above cases, \fBmanlifter\fR will uncompress the file if it has a \&.gz, \&.bz2 or \&.Z suffix on the name\&. .PP Options are as follows: .PP \-d .RS 4 Pass the string argument to each doclifter call as options\&. Each space\-separated token in the string becomes a separate argument in the call\&. .RE .PP \-e .RS 4 Run in log\-filter mode (mainly of interest to \fBdoclifter\fR developers)\&. In this mode, \fBmanlifter\fR reads a test log from standard input and filters it in a a way dependent on the \-f and \-q options\&. If neither of these is given, messages from successful runs are stripped out and only errors passed through to standard output\&. .RE .PP \-f .RS 4 Normally, run doclifter on the files named by each line in the argument file\&. In error\-filter mode the argument is instead interpreted as a filtering regular expression\&. .RE .PP \-h .RS 4 Also generate HTML translations into the output directory\&. DocBook citerefentry markup is transformed to hyperlinks in the directory, and a contents listing is generated to index\&.html\&. .RE .PP \-I .RS 4 Specify the root of the manual\-page tree\&. By default this is /usr/share/man\&. .RE .PP \-m .RS 4 Make a patch to correct the last page fetched\&. It is copied, an editor is called on the copy (using the environment variable \fB$EDITOR\fR), and then \fBdiff\fR(1) is called to drop the patch in the prepatch directory\&. Fails with an error if such a patch is already present\&. .RE .PP \-M .RS 4 Lift the specified files, then do the equivalent of the \-m option\&. .RE .PP \-o .RS 4 Set the output directory into which XML\-DocBook translations will be dropped\&. By default this is xmlman under the current directory in batch mode, or the current directory otherwise\&. .RE .PP \-p .RS 4 Interpret the argument as the name of a patch directory (the default name is prepatch under the current directory)\&. Each file named foo\&.N\&.patch is interpreted as a patch to be applied to the manual page foo(N) before doclifter translates it\&. .RE .PP \-q .RS 4 Normally, pass the \-q (quiet) option to each doclifter call\&. In error\-filter mode, return a list of files on which translation failed\&. .RE .PP \-v .RS 4 Pass the \-v (verbose) option to each doclifter call\&. This option can be repeated to increase the verbosity level\&. .RE .PP \-s .RS 4 Specify a section to scan\&. Use this with an argument; it should not be necessary when doing a conversion of the entire tree\&. .RE .PP \-S .RS 4 Compile error statistics from a \fBmanlifter\fR logfile presented on standard input\&. This option will be of interest mainly to \fBdoclifter\fR developers\&. .RE .PP \-X .RS 4 In batch mode exclude pages listed in the argument file\&. Meant to be used for pages that are known good and take an extremely long time to lift, in order to cut down the time for a test run\&. (Most pages lift in less than a half second, but a few can take 15 minutes or longer\&.) .RE .PP \fBmanlifter\fR emits a logfile to standard output\&. The file begins with a timestamp line and a blank line, and ends with a line giving run time and various interesting statistics\&. Between these are stanzas, separated by blank lines, one for each file on which \fBdoclifter\fR was run\&. .PP The first line of each stanza beguns with "! ", followed by the pathname of the source manual pager, followed by "=" and the return status of doclifter run on that file\&. Following that is a space and \fBdoclifter\fR\*(Aqs runtime in seconds\&. .PP This initial line may be followed by information messages and the error output of the doclifter run\&. .PP \fBmanlifter\fR must find a copy of \fBdoclifter\fR in either the current directory or one of the command directories in your \fBPATH\fR in order to run\&. .SH "BUGS" .PP HTML generation is painfully slow\&. Unfortunately, there is little we can do to remedy this, because XSLT engines are painfully slow\&. .SH "SEE ALSO" .PP \fBdoclifter\fR(1), \fBxmlto\fR(1) .SH "AUTHOR" .PP Eric S\&. Raymond .PP There is a project web page at \m[blue]\fBhttp://www\&.catb\&.org/~esr/doclifter/\fR\m[]\&.