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