xref: /freebsd-src/contrib/mandoc/catman.8 (revision 01d4e2149e5566e5d9394913dc9fb032da259e0b)
1*61d06d6bSBaptiste Daroussin.\"	$Id: catman.8,v 1.8 2017/03/18 19:56:01 schwarze Exp $
2*61d06d6bSBaptiste Daroussin.\"
3*61d06d6bSBaptiste Daroussin.\" Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org>
4*61d06d6bSBaptiste Daroussin.\"
5*61d06d6bSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software for any
6*61d06d6bSBaptiste Daroussin.\" purpose with or without fee is hereby granted, provided that the above
7*61d06d6bSBaptiste Daroussin.\" copyright notice and this permission notice appear in all copies.
8*61d06d6bSBaptiste Daroussin.\"
9*61d06d6bSBaptiste Daroussin.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*61d06d6bSBaptiste Daroussin.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*61d06d6bSBaptiste Daroussin.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*61d06d6bSBaptiste Daroussin.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*61d06d6bSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*61d06d6bSBaptiste Daroussin.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*61d06d6bSBaptiste Daroussin.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*61d06d6bSBaptiste Daroussin.\"
17*61d06d6bSBaptiste Daroussin.Dd $Mdocdate: March 18 2017 $
18*61d06d6bSBaptiste Daroussin.Dt CATMAN 8
19*61d06d6bSBaptiste Daroussin.Os
20*61d06d6bSBaptiste Daroussin.Sh NAME
21*61d06d6bSBaptiste Daroussin.Nm catman
22*61d06d6bSBaptiste Daroussin.Nd format all manual pages below a directory
23*61d06d6bSBaptiste Daroussin.Sh SYNOPSIS
24*61d06d6bSBaptiste Daroussin.Nm catman
25*61d06d6bSBaptiste Daroussin.Op Fl I Cm os Ns = Ns Ar name
26*61d06d6bSBaptiste Daroussin.Op Fl T Ar output
27*61d06d6bSBaptiste Daroussin.Ar srcdir dstdir
28*61d06d6bSBaptiste Daroussin.Sh DESCRIPTION
29*61d06d6bSBaptiste DaroussinThe
30*61d06d6bSBaptiste Daroussin.Nm
31*61d06d6bSBaptiste Daroussinutility assumes that all files below
32*61d06d6bSBaptiste Daroussin.Ar srcdir
33*61d06d6bSBaptiste Daroussinare manual pages in
34*61d06d6bSBaptiste Daroussin.Xr mdoc 7
35*61d06d6bSBaptiste Daroussinand
36*61d06d6bSBaptiste Daroussin.Xr man 7
37*61d06d6bSBaptiste Daroussinformat and formats all of them, storing the formatted versions in
38*61d06d6bSBaptiste Daroussinthe same relative paths below
39*61d06d6bSBaptiste Daroussin.Ar dstdir .
40*61d06d6bSBaptiste DaroussinSubdirectories of
41*61d06d6bSBaptiste Daroussin.Ar dstdir
42*61d06d6bSBaptiste Daroussinare created as needed.
43*61d06d6bSBaptiste DaroussinExisting files are not explicitly deleted, but possibly overwritten.
44*61d06d6bSBaptiste Daroussin.Pp
45*61d06d6bSBaptiste DaroussinThe options are as follows:
46*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
47*61d06d6bSBaptiste Daroussin.It Fl I Cm os Ns = Ns Ar name
48*61d06d6bSBaptiste DaroussinOverride the default operating system
49*61d06d6bSBaptiste Daroussin.Ar name
50*61d06d6bSBaptiste Daroussinfor the
51*61d06d6bSBaptiste Daroussin.Xr mdoc 7
52*61d06d6bSBaptiste Daroussin.Ic \&Os
53*61d06d6bSBaptiste Daroussinand for the
54*61d06d6bSBaptiste Daroussin.Xr man 7
55*61d06d6bSBaptiste Daroussin.Ic TH
56*61d06d6bSBaptiste Daroussinmacro.
57*61d06d6bSBaptiste Daroussin.It Fl T Ar output
58*61d06d6bSBaptiste DaroussinOutput format.
59*61d06d6bSBaptiste DaroussinThe
60*61d06d6bSBaptiste Daroussin.Ar output
61*61d06d6bSBaptiste Daroussinargument can be
62*61d06d6bSBaptiste Daroussin.Cm ascii ,
63*61d06d6bSBaptiste Daroussin.Cm utf8 ,
64*61d06d6bSBaptiste Daroussinor
65*61d06d6bSBaptiste Daroussin.Cm html ;
66*61d06d6bSBaptiste Daroussinsee
67*61d06d6bSBaptiste Daroussin.Xr mandoc 1 .
68*61d06d6bSBaptiste DaroussinIn
69*61d06d6bSBaptiste Daroussin.Cm html
70*61d06d6bSBaptiste Daroussinoutput mode, the
71*61d06d6bSBaptiste Daroussin.Cm fragment
72*61d06d6bSBaptiste Daroussinoutput option is implied.
73*61d06d6bSBaptiste DaroussinOther output options are not supported.
74*61d06d6bSBaptiste Daroussin.El
75*61d06d6bSBaptiste Daroussin.Sh IMPLEMENTATION NOTES
76*61d06d6bSBaptiste DaroussinSince this version avoids
77*61d06d6bSBaptiste Daroussin.Xr fork 2
78*61d06d6bSBaptiste Daroussinand
79*61d06d6bSBaptiste Daroussin.Xr exec 3
80*61d06d6bSBaptiste Daroussinoverhead and uses the much faster
81*61d06d6bSBaptiste Daroussin.Sy mandoc
82*61d06d6bSBaptiste Daroussinparsers and formatters rather than
83*61d06d6bSBaptiste Daroussin.Sy groff ,
84*61d06d6bSBaptiste Daroussinit may be about one order of magnitude faster than other
85*61d06d6bSBaptiste Daroussin.Nm
86*61d06d6bSBaptiste Daroussinimplementations.
87*61d06d6bSBaptiste Daroussin.Sh EXIT STATUS
88*61d06d6bSBaptiste Daroussin.Ex -std
89*61d06d6bSBaptiste Daroussin.Pp
90*61d06d6bSBaptiste DaroussinPossible errors include:
91*61d06d6bSBaptiste Daroussin.Bl -bullet
92*61d06d6bSBaptiste Daroussin.It
93*61d06d6bSBaptiste Daroussinmissing, invalid, or excessive command line arguments
94*61d06d6bSBaptiste Daroussin.It
95*61d06d6bSBaptiste Daroussinfailure to change the current working directory to
96*61d06d6bSBaptiste Daroussin.Ar srcdir
97*61d06d6bSBaptiste Daroussin.It
98*61d06d6bSBaptiste Daroussinfailure to open
99*61d06d6bSBaptiste Daroussin.Ar dstdir
100*61d06d6bSBaptiste Daroussin.It
101*61d06d6bSBaptiste Daroussincommunication failure with
102*61d06d6bSBaptiste Daroussin.Xr mandocd 8
103*61d06d6bSBaptiste Daroussin.It
104*61d06d6bSBaptiste Daroussinresource exhaustion, for example file descriptor, process table,
105*61d06d6bSBaptiste Daroussinor memory exhaustion
106*61d06d6bSBaptiste Daroussin.El
107*61d06d6bSBaptiste Daroussin.Pp
108*61d06d6bSBaptiste DaroussinExcept for memory exhaustion and similar system-level failures,
109*61d06d6bSBaptiste Daroussinfailures while trying to open, read, parse, or format individual
110*61d06d6bSBaptiste Daroussinmanual pages, to save individual formatted files to the file system,
111*61d06d6bSBaptiste Daroussinor even to create directories do not cause
112*61d06d6bSBaptiste Daroussin.Nm
113*61d06d6bSBaptiste Daroussinto return an error exit status.
114*61d06d6bSBaptiste DaroussinIn such cases,
115*61d06d6bSBaptiste Daroussin.Nm
116*61d06d6bSBaptiste Daroussinwill simply continue with the next file or subdirectory.
117*61d06d6bSBaptiste Daroussin.Sh SEE ALSO
118*61d06d6bSBaptiste Daroussin.Xr mandoc 1 ,
119*61d06d6bSBaptiste Daroussin.Xr mandocd 8
120*61d06d6bSBaptiste Daroussin.Sh HISTORY
121*61d06d6bSBaptiste DaroussinA
122*61d06d6bSBaptiste Daroussin.Nm
123*61d06d6bSBaptiste Daroussinutility first appeared in
124*61d06d6bSBaptiste Daroussin.Fx 1.0 .
125*61d06d6bSBaptiste DaroussinOther, incompatible implementations appeared in
126*61d06d6bSBaptiste Daroussin.Nx 1.0
127*61d06d6bSBaptiste Daroussinand in
128*61d06d6bSBaptiste Daroussin.Sy man-db No 2.2 .
129*61d06d6bSBaptiste Daroussin.Pp
130*61d06d6bSBaptiste DaroussinThis version appeared in version 1.14.1 of the
131*61d06d6bSBaptiste Daroussin.Sy mandoc
132*61d06d6bSBaptiste Daroussintoolkit.
133*61d06d6bSBaptiste Daroussin.Sh AUTHORS
134*61d06d6bSBaptiste Daroussin.An -nosplit
135*61d06d6bSBaptiste DaroussinThe first
136*61d06d6bSBaptiste Daroussin.Nm
137*61d06d6bSBaptiste Daroussinimplementation was a short shell script by
138*61d06d6bSBaptiste Daroussin.An Christoph Robitschko
139*61d06d6bSBaptiste Daroussinin July 1993.
140*61d06d6bSBaptiste Daroussin.Pp
141*61d06d6bSBaptiste DaroussinThe
142*61d06d6bSBaptiste Daroussin.Nx
143*61d06d6bSBaptiste Daroussinimplementations were written by
144*61d06d6bSBaptiste Daroussin.An J. T. Conklin Aq Mt jtc@netbsd.org
145*61d06d6bSBaptiste Daroussinin 1993,
146*61d06d6bSBaptiste Daroussin.An Christian E. Hopps Aq Mt chopps@netbsd.org
147*61d06d6bSBaptiste Daroussinin 1994,
148*61d06d6bSBaptiste Daroussinand
149*61d06d6bSBaptiste Daroussin.An Dante Profeta Aq Mt dante@netbsd.org
150*61d06d6bSBaptiste Daroussinin 1999; the
151*61d06d6bSBaptiste Daroussin.Sy man-db
152*61d06d6bSBaptiste Daroussinimplementation by
153*61d06d6bSBaptiste Daroussin.An Graeme W. Wilford
154*61d06d6bSBaptiste Daroussinin 1994; and the
155*61d06d6bSBaptiste Daroussin.Fx
156*61d06d6bSBaptiste Daroussinimplementations by
157*61d06d6bSBaptiste Daroussin.An Wolfram Schneider Aq Mt wosch@freebsd.org
158*61d06d6bSBaptiste Daroussinin 1995 and
159*61d06d6bSBaptiste Daroussin.An John Rochester Aq Mt john@jrochester.org
160*61d06d6bSBaptiste Daroussinin 2002.
161*61d06d6bSBaptiste Daroussin.Pp
162*61d06d6bSBaptiste DaroussinThe concept of the present version was designed and implemented by
163*61d06d6bSBaptiste Daroussin.An Michael Stapelberg Aq Mt stapelberg@debian.org
164*61d06d6bSBaptiste Daroussinin 2017.
165*61d06d6bSBaptiste DaroussinOption and argument handling and directory iteration was added by
166*61d06d6bSBaptiste Daroussin.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
167*61d06d6bSBaptiste Daroussin.Sh CAVEATS
168*61d06d6bSBaptiste DaroussinAll versions of
169*61d06d6bSBaptiste Daroussin.Nm
170*61d06d6bSBaptiste Daroussinare incompatible with each other because each caters to the needs
171*61d06d6bSBaptiste Daroussinof a specific operating system, for example regarding directory
172*61d06d6bSBaptiste Daroussinstructures and file naming conventions.
173*61d06d6bSBaptiste Daroussin.Pp
174*61d06d6bSBaptiste DaroussinThis version is more flexible than the others in so far as it does
175*61d06d6bSBaptiste Daroussinnot assume any particular directory structure or naming convention.
176*61d06d6bSBaptiste DaroussinThat flexibility comes at the price of not being able to change the
177*61d06d6bSBaptiste Daroussinnames and relative paths of the source files when reusing them to
178*61d06d6bSBaptiste Daroussinstore the formatted files, of not supporting any configuration file
179*61d06d6bSBaptiste Daroussinformats or environment variables, and of being unable to scan for
180*61d06d6bSBaptiste Daroussinand remove junk files in
181*61d06d6bSBaptiste Daroussin.Ar dstdir .
182*61d06d6bSBaptiste Daroussin.Pp
183*61d06d6bSBaptiste DaroussinCurrently,
184*61d06d6bSBaptiste Daroussin.Nm
185*61d06d6bSBaptiste Daroussinalways reformats each page, even if the formatted version is newer
186*61d06d6bSBaptiste Daroussinthan the source version.
187