1*61d06d6bSBaptiste Daroussin.\" $Id: mandoc.db.5,v 1.5 2016/08/01 12:27:15 schwarze Exp $ 2*61d06d6bSBaptiste Daroussin.\" 3*61d06d6bSBaptiste Daroussin.\" Copyright (c) 2014, 2016 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: August 1 2016 $ 18*61d06d6bSBaptiste Daroussin.Dt MANDOC.DB 5 19*61d06d6bSBaptiste Daroussin.Os 20*61d06d6bSBaptiste Daroussin.Sh NAME 21*61d06d6bSBaptiste Daroussin.Nm mandoc.db 22*61d06d6bSBaptiste Daroussin.Nd manual page database 23*61d06d6bSBaptiste Daroussin.Sh DESCRIPTION 24*61d06d6bSBaptiste DaroussinThe 25*61d06d6bSBaptiste Daroussin.Nm 26*61d06d6bSBaptiste Daroussinfile format is used to store information about installed manual 27*61d06d6bSBaptiste Daroussinpages to facilitate semantic searching for manuals. 28*61d06d6bSBaptiste DaroussinEach manual page tree contains its own 29*61d06d6bSBaptiste Daroussin.Nm 30*61d06d6bSBaptiste Daroussinfile; see 31*61d06d6bSBaptiste Daroussin.Sx FILES 32*61d06d6bSBaptiste Daroussinfor examples. 33*61d06d6bSBaptiste Daroussin.Pp 34*61d06d6bSBaptiste DaroussinSuch database files are generated by 35*61d06d6bSBaptiste Daroussin.Xr makewhatis 8 36*61d06d6bSBaptiste Daroussinand used by 37*61d06d6bSBaptiste Daroussin.Xr man 1 , 38*61d06d6bSBaptiste Daroussin.Xr apropos 1 39*61d06d6bSBaptiste Daroussinand 40*61d06d6bSBaptiste Daroussin.Xr whatis 1 . 41*61d06d6bSBaptiste Daroussin.Pp 42*61d06d6bSBaptiste DaroussinThe file format uses three datatypes: 43*61d06d6bSBaptiste Daroussin.Pp 44*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 45*61d06d6bSBaptiste Daroussin.It 46*61d06d6bSBaptiste Daroussin32-bit signed integer numbers in big endian (network) byte ordering 47*61d06d6bSBaptiste Daroussin.It 48*61d06d6bSBaptiste DaroussinNUL-terminated strings 49*61d06d6bSBaptiste Daroussin.It 50*61d06d6bSBaptiste Daroussinlists of NUL-terminated strings, terminated by a second NUL character 51*61d06d6bSBaptiste Daroussin.El 52*61d06d6bSBaptiste Daroussin.Pp 53*61d06d6bSBaptiste DaroussinNumbers are aligned to four-byte boundaries; where they follow 54*61d06d6bSBaptiste Daroussinstrings or lists of strings, padding with additional NUL characters 55*61d06d6bSBaptiste Daroussinoccurs. 56*61d06d6bSBaptiste DaroussinSome, but not all, numbers point to positions in the file. 57*61d06d6bSBaptiste DaroussinThese pointers are measured in bytes, and the first byte of the 58*61d06d6bSBaptiste Daroussinfile is considered to be byte 0. 59*61d06d6bSBaptiste Daroussin.Pp 60*61d06d6bSBaptiste DaroussinEach file consists of: 61*61d06d6bSBaptiste Daroussin.Pp 62*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 63*61d06d6bSBaptiste Daroussin.It 64*61d06d6bSBaptiste DaroussinOne magic number, 0x3a7d0cdb. 65*61d06d6bSBaptiste Daroussin.It 66*61d06d6bSBaptiste DaroussinOne version number, currently 1. 67*61d06d6bSBaptiste Daroussin.It 68*61d06d6bSBaptiste DaroussinOne pointer to the macros table. 69*61d06d6bSBaptiste Daroussin.It 70*61d06d6bSBaptiste DaroussinOne pointer to the final magic number. 71*61d06d6bSBaptiste Daroussin.It 72*61d06d6bSBaptiste DaroussinThe pages table (variable length). 73*61d06d6bSBaptiste Daroussin.It 74*61d06d6bSBaptiste DaroussinThe macros table (variable length). 75*61d06d6bSBaptiste Daroussin.It 76*61d06d6bSBaptiste DaroussinThe magic number once again, 0x3a7d0cdb. 77*61d06d6bSBaptiste Daroussin.El 78*61d06d6bSBaptiste Daroussin.Pp 79*61d06d6bSBaptiste DaroussinThe pages table contains one entry for each physical manual page 80*61d06d6bSBaptiste Daroussinfile, no matter how many hard and soft links it may have in the 81*61d06d6bSBaptiste Daroussinfile system. 82*61d06d6bSBaptiste DaroussinThe pages table consists of: 83*61d06d6bSBaptiste Daroussin.Pp 84*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 85*61d06d6bSBaptiste Daroussin.It 86*61d06d6bSBaptiste DaroussinThe number of pages in the database. 87*61d06d6bSBaptiste Daroussin.It 88*61d06d6bSBaptiste DaroussinFor each page: 89*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 90*61d06d6bSBaptiste Daroussin.It 91*61d06d6bSBaptiste DaroussinOne pointer to the list of names. 92*61d06d6bSBaptiste Daroussin.It 93*61d06d6bSBaptiste DaroussinOne pointer to the list of sections. 94*61d06d6bSBaptiste Daroussin.It 95*61d06d6bSBaptiste DaroussinOne pointer to the list of architectures 96*61d06d6bSBaptiste Daroussinor 0 if the page is machine-independent. 97*61d06d6bSBaptiste Daroussin.It 98*61d06d6bSBaptiste DaroussinOne pointer to the one-line description string. 99*61d06d6bSBaptiste Daroussin.It 100*61d06d6bSBaptiste DaroussinOne pointer to the list of filenames. 101*61d06d6bSBaptiste Daroussin.El 102*61d06d6bSBaptiste Daroussin.It 103*61d06d6bSBaptiste DaroussinFor each page, the list of names. 104*61d06d6bSBaptiste DaroussinEach name is preceded by a single byte indicating the sources of the name. 105*61d06d6bSBaptiste DaroussinThe meaning of the bits is: 106*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 107*61d06d6bSBaptiste Daroussin.It 108*61d06d6bSBaptiste Daroussin0x10: The name appears in a filename. 109*61d06d6bSBaptiste Daroussin.It 110*61d06d6bSBaptiste Daroussin0x08: The name appears in a header line, i.e. in a .Dt or .TH macro. 111*61d06d6bSBaptiste Daroussin.It 112*61d06d6bSBaptiste Daroussin0x04: The name is the first one in the title line, i.e. it appears 113*61d06d6bSBaptiste Daroussinin the first .Nm macro in the NAME section. 114*61d06d6bSBaptiste Daroussin.It 115*61d06d6bSBaptiste Daroussin0x02: The name appears in any .Nm macro in the NAME section. 116*61d06d6bSBaptiste Daroussin.It 117*61d06d6bSBaptiste Daroussin0x01: The name appears in an .Nm block in the SYNOPSIS section. 118*61d06d6bSBaptiste Daroussin.El 119*61d06d6bSBaptiste Daroussin.It 120*61d06d6bSBaptiste DaroussinFor each page, the list of sections. 121*61d06d6bSBaptiste DaroussinEach section is given as a string, not as a number. 122*61d06d6bSBaptiste Daroussin.It 123*61d06d6bSBaptiste DaroussinFor each architecture-dependent page, the list of architectures. 124*61d06d6bSBaptiste Daroussin.It 125*61d06d6bSBaptiste DaroussinFor each page, the one-line description string taken from the .Nd macro. 126*61d06d6bSBaptiste Daroussin.It 127*61d06d6bSBaptiste DaroussinFor each page, the list of filenames relative to the root of the 128*61d06d6bSBaptiste Daroussinrespective manpath. 129*61d06d6bSBaptiste DaroussinThis list includes hard links, soft links, and links simulated 130*61d06d6bSBaptiste Daroussinwith .so 131*61d06d6bSBaptiste Daroussin.Xr roff 7 132*61d06d6bSBaptiste Daroussinrequests. 133*61d06d6bSBaptiste DaroussinThe first filename is preceded by a single byte 134*61d06d6bSBaptiste Daroussinhaving the following significance: 135*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 136*61d06d6bSBaptiste Daroussin.It 137*61d06d6bSBaptiste Daroussin.Dv FORM_SRC No = 0x01 : 138*61d06d6bSBaptiste DaroussinThe file format is 139*61d06d6bSBaptiste Daroussin.Xr mdoc 7 140*61d06d6bSBaptiste Daroussinor 141*61d06d6bSBaptiste Daroussin.Xr man 7 . 142*61d06d6bSBaptiste Daroussin.It 143*61d06d6bSBaptiste Daroussin.Dv FORM_CAT No = 0x02 : 144*61d06d6bSBaptiste DaroussinThe manual page is preformatted. 145*61d06d6bSBaptiste Daroussin.El 146*61d06d6bSBaptiste Daroussin.It 147*61d06d6bSBaptiste DaroussinZero to three NUL bytes for padding. 148*61d06d6bSBaptiste Daroussin.El 149*61d06d6bSBaptiste Daroussin.Pp 150*61d06d6bSBaptiste DaroussinThe macros table consists of: 151*61d06d6bSBaptiste Daroussin.Pp 152*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 153*61d06d6bSBaptiste Daroussin.It 154*61d06d6bSBaptiste DaroussinThe number of different macro keys, currently 36. 155*61d06d6bSBaptiste DaroussinThe ordering of macros is defined in 156*61d06d6bSBaptiste Daroussin.In mansearch.h 157*61d06d6bSBaptiste Daroussinand the significance of the macro keys is documented in 158*61d06d6bSBaptiste Daroussin.Xr apropos 1 . 159*61d06d6bSBaptiste Daroussin.It 160*61d06d6bSBaptiste DaroussinFor each macro key, one pointer to the respective macro table. 161*61d06d6bSBaptiste Daroussin.It 162*61d06d6bSBaptiste DaroussinFor each macro key, the macro table (variable length). 163*61d06d6bSBaptiste Daroussin.El 164*61d06d6bSBaptiste Daroussin.Pp 165*61d06d6bSBaptiste DaroussinEach macro table consists of: 166*61d06d6bSBaptiste Daroussin.Pp 167*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 168*61d06d6bSBaptiste Daroussin.It 169*61d06d6bSBaptiste DaroussinThe number of entries in the table. 170*61d06d6bSBaptiste Daroussin.It 171*61d06d6bSBaptiste DaroussinFor each entry: 172*61d06d6bSBaptiste Daroussin.Bl -dash -compact -offset 2n -width 1n 173*61d06d6bSBaptiste Daroussin.It 174*61d06d6bSBaptiste DaroussinOne pointer to the value of the macro key. 175*61d06d6bSBaptiste DaroussinEach value is a string of text taken from some macro invocation. 176*61d06d6bSBaptiste Daroussin.It 177*61d06d6bSBaptiste DaroussinOne pointer to the list of pages. 178*61d06d6bSBaptiste Daroussin.El 179*61d06d6bSBaptiste Daroussin.It 180*61d06d6bSBaptiste DaroussinFor each entry, the value of the macro key. 181*61d06d6bSBaptiste Daroussin.It 182*61d06d6bSBaptiste DaroussinZero to three NUL bytes for padding. 183*61d06d6bSBaptiste Daroussin.It 184*61d06d6bSBaptiste DaroussinFor each entry, one or more pointers to pages in the pages table, 185*61d06d6bSBaptiste Daroussinpointing to the pointer to the list of names, 186*61d06d6bSBaptiste Daroussinfollowed by the number 0. 187*61d06d6bSBaptiste Daroussin.El 188*61d06d6bSBaptiste Daroussin.Sh FILES 189*61d06d6bSBaptiste Daroussin.Bl -tag -width /usr/share/man/mandoc.db -compact 190*61d06d6bSBaptiste Daroussin.It Pa /usr/share/man/mandoc.db 191*61d06d6bSBaptiste DaroussinThe manual page database for the base system. 192*61d06d6bSBaptiste Daroussin.It Pa /usr/X11R6/man/mandoc.db 193*61d06d6bSBaptiste DaroussinThe same for the 194*61d06d6bSBaptiste Daroussin.Xr X 7 195*61d06d6bSBaptiste DaroussinWindow System. 196*61d06d6bSBaptiste Daroussin.It Pa /usr/local/man/mandoc.db 197*61d06d6bSBaptiste DaroussinThe same for 198*61d06d6bSBaptiste Daroussin.Xr packages 7 . 199*61d06d6bSBaptiste Daroussin.El 200*61d06d6bSBaptiste Daroussin.Pp 201*61d06d6bSBaptiste DaroussinA program to dump 202*61d06d6bSBaptiste Daroussin.Nm 203*61d06d6bSBaptiste Daroussinfiles in a human-readable format suitable for 204*61d06d6bSBaptiste Daroussin.Xr diff 1 205*61d06d6bSBaptiste Daroussinis provided in the directory 206*61d06d6bSBaptiste Daroussin.Pa /usr/src/regress/usr.bin/mandoc/db/dbm_dump/ . 207*61d06d6bSBaptiste Daroussin.Sh SEE ALSO 208*61d06d6bSBaptiste Daroussin.Xr apropos 1 , 209*61d06d6bSBaptiste Daroussin.Xr man 1 , 210*61d06d6bSBaptiste Daroussin.Xr whatis 1 , 211*61d06d6bSBaptiste Daroussin.Xr makewhatis 8 212*61d06d6bSBaptiste Daroussin.Sh HISTORY 213*61d06d6bSBaptiste DaroussinA manual page database 214*61d06d6bSBaptiste Daroussin.Pa /usr/lib/whatis 215*61d06d6bSBaptiste Daroussinfirst appeared in 216*61d06d6bSBaptiste Daroussin.Bx 2 . 217*61d06d6bSBaptiste DaroussinThe present format first appeared in 218*61d06d6bSBaptiste Daroussin.Ox 6.1 . 219*61d06d6bSBaptiste Daroussin.Sh AUTHORS 220*61d06d6bSBaptiste Daroussin.An -nosplit 221*61d06d6bSBaptiste DaroussinThe original version of 222*61d06d6bSBaptiste Daroussin.Xr makewhatis 8 223*61d06d6bSBaptiste Daroussinwas written by 224*61d06d6bSBaptiste Daroussin.An Bill Joy 225*61d06d6bSBaptiste Daroussinin 1979. 226*61d06d6bSBaptiste DaroussinThe present database format was designed by 227*61d06d6bSBaptiste Daroussin.An Ingo Schwarze Aq Mt schwarze@openbsd.org 228*61d06d6bSBaptiste Daroussinin 2016. 229