xref: /freebsd/contrib/mandoc/mandoc.db.5 (revision 01d4e2149e5566e5d9394913dc9fb032da259e0b)
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