xref: /dflybsd-src/contrib/mdocml/mandoc.db.5 (revision f3c0e43315ed177c30bea14922610325ba413b22)
154ba9607SSascha Wildner.\"	$Id: mandoc.db.5,v 1.5 2016/08/01 12:27:15 schwarze Exp $
2070c62a6SFranco Fichtner.\"
354ba9607SSascha Wildner.\" Copyright (c) 2014, 2016 Ingo Schwarze <schwarze@openbsd.org>
4070c62a6SFranco Fichtner.\"
5070c62a6SFranco Fichtner.\" Permission to use, copy, modify, and distribute this software for any
6070c62a6SFranco Fichtner.\" purpose with or without fee is hereby granted, provided that the above
7070c62a6SFranco Fichtner.\" copyright notice and this permission notice appear in all copies.
8070c62a6SFranco Fichtner.\"
9070c62a6SFranco Fichtner.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10070c62a6SFranco Fichtner.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11070c62a6SFranco Fichtner.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12070c62a6SFranco Fichtner.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13070c62a6SFranco Fichtner.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14070c62a6SFranco Fichtner.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15070c62a6SFranco Fichtner.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16070c62a6SFranco Fichtner.\"
1754ba9607SSascha Wildner.Dd $Mdocdate: August 1 2016 $
18070c62a6SFranco Fichtner.Dt MANDOC.DB 5
19070c62a6SFranco Fichtner.Os
20070c62a6SFranco Fichtner.Sh NAME
21070c62a6SFranco Fichtner.Nm mandoc.db
22070c62a6SFranco Fichtner.Nd manual page database
23070c62a6SFranco Fichtner.Sh DESCRIPTION
24070c62a6SFranco FichtnerThe
25070c62a6SFranco Fichtner.Nm
2654ba9607SSascha Wildnerfile format is used to store information about installed manual
27070c62a6SFranco Fichtnerpages to facilitate semantic searching for manuals.
28070c62a6SFranco FichtnerEach manual page tree contains its own
29070c62a6SFranco Fichtner.Nm
30070c62a6SFranco Fichtnerfile; see
31070c62a6SFranco Fichtner.Sx FILES
32070c62a6SFranco Fichtnerfor examples.
33070c62a6SFranco Fichtner.Pp
34070c62a6SFranco FichtnerSuch database files are generated by
35070c62a6SFranco Fichtner.Xr makewhatis 8
36070c62a6SFranco Fichtnerand used by
3754ba9607SSascha Wildner.Xr man 1 ,
38070c62a6SFranco Fichtner.Xr apropos 1
39070c62a6SFranco Fichtnerand
40070c62a6SFranco Fichtner.Xr whatis 1 .
41070c62a6SFranco Fichtner.Pp
4254ba9607SSascha WildnerThe file format uses three datatypes:
4354ba9607SSascha Wildner.Pp
4454ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
4554ba9607SSascha Wildner.It
4654ba9607SSascha Wildner32-bit signed integer numbers in big endian (network) byte ordering
4754ba9607SSascha Wildner.It
4854ba9607SSascha WildnerNUL-terminated strings
4954ba9607SSascha Wildner.It
5054ba9607SSascha Wildnerlists of NUL-terminated strings, terminated by a second NUL character
51070c62a6SFranco Fichtner.El
52070c62a6SFranco Fichtner.Pp
5354ba9607SSascha WildnerNumbers are aligned to four-byte boundaries; where they follow
5454ba9607SSascha Wildnerstrings or lists of strings, padding with additional NUL characters
5554ba9607SSascha Wildneroccurs.
5654ba9607SSascha WildnerSome, but not all, numbers point to positions in the file.
5754ba9607SSascha WildnerThese pointers are measured in bytes, and the first byte of the
5854ba9607SSascha Wildnerfile is considered to be byte 0.
59070c62a6SFranco Fichtner.Pp
6054ba9607SSascha WildnerEach file consists of:
6154ba9607SSascha Wildner.Pp
6254ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
6354ba9607SSascha Wildner.It
6454ba9607SSascha WildnerOne magic number, 0x3a7d0cdb.
6554ba9607SSascha Wildner.It
6654ba9607SSascha WildnerOne version number, currently 1.
6754ba9607SSascha Wildner.It
6854ba9607SSascha WildnerOne pointer to the macros table.
6954ba9607SSascha Wildner.It
7054ba9607SSascha WildnerOne pointer to the final magic number.
7154ba9607SSascha Wildner.It
7254ba9607SSascha WildnerThe pages table (variable length).
7354ba9607SSascha Wildner.It
7454ba9607SSascha WildnerThe macros table (variable length).
7554ba9607SSascha Wildner.It
7654ba9607SSascha WildnerThe magic number once again, 0x3a7d0cdb.
7754ba9607SSascha Wildner.El
7854ba9607SSascha Wildner.Pp
7954ba9607SSascha WildnerThe pages table contains one entry for each physical manual page
8054ba9607SSascha Wildnerfile, no matter how many hard and soft links it may have in the
8154ba9607SSascha Wildnerfile system.
8254ba9607SSascha WildnerThe pages table consists of:
8354ba9607SSascha Wildner.Pp
8454ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
8554ba9607SSascha Wildner.It
8654ba9607SSascha WildnerThe number of pages in the database.
8754ba9607SSascha Wildner.It
8854ba9607SSascha WildnerFor each page:
8954ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
9054ba9607SSascha Wildner.It
9154ba9607SSascha WildnerOne pointer to the list of names.
9254ba9607SSascha Wildner.It
9354ba9607SSascha WildnerOne pointer to the list of sections.
9454ba9607SSascha Wildner.It
9554ba9607SSascha WildnerOne pointer to the list of architectures
9654ba9607SSascha Wildneror 0 if the page is machine-independent.
9754ba9607SSascha Wildner.It
9854ba9607SSascha WildnerOne pointer to the one-line description string.
9954ba9607SSascha Wildner.It
10054ba9607SSascha WildnerOne pointer to the list of filenames.
10154ba9607SSascha Wildner.El
10254ba9607SSascha Wildner.It
10354ba9607SSascha WildnerFor each page, the list of names.
10454ba9607SSascha WildnerEach name is preceded by a single byte indicating the sources of the name.
10554ba9607SSascha WildnerThe meaning of the bits is:
10654ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
10754ba9607SSascha Wildner.It
10854ba9607SSascha Wildner0x10: The name appears in a filename.
10954ba9607SSascha Wildner.It
11054ba9607SSascha Wildner0x08: The name appears in a header line, i.e. in a .Dt or .TH macro.
11154ba9607SSascha Wildner.It
11254ba9607SSascha Wildner0x04: The name is the first one in the title line, i.e. it appears
11354ba9607SSascha Wildnerin the first .Nm macro in the NAME section.
11454ba9607SSascha Wildner.It
11554ba9607SSascha Wildner0x02: The name appears in any .Nm macro in the NAME section.
11654ba9607SSascha Wildner.It
11754ba9607SSascha Wildner0x01: The name appears in an .Nm block in the SYNOPSIS section.
11854ba9607SSascha Wildner.El
11954ba9607SSascha Wildner.It
12054ba9607SSascha WildnerFor each page, the list of sections.
12154ba9607SSascha WildnerEach section is given as a string, not as a number.
12254ba9607SSascha Wildner.It
12354ba9607SSascha WildnerFor each architecture-dependent page, the list of architectures.
12454ba9607SSascha Wildner.It
12554ba9607SSascha WildnerFor each page, the one-line description string taken from the .Nd macro.
12654ba9607SSascha Wildner.It
12754ba9607SSascha WildnerFor each page, the list of filenames relative to the root of the
12854ba9607SSascha Wildnerrespective manpath.
12954ba9607SSascha WildnerThis list includes hard links, soft links, and links simulated
13054ba9607SSascha Wildnerwith .so
13154ba9607SSascha Wildner.Xr roff 7
13254ba9607SSascha Wildnerrequests.
13354ba9607SSascha WildnerThe first filename is preceded by a single byte
13454ba9607SSascha Wildnerhaving the following significance:
13554ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
13654ba9607SSascha Wildner.It
13754ba9607SSascha Wildner.Dv FORM_SRC No = 0x01 :
13854ba9607SSascha WildnerThe file format is
139070c62a6SFranco Fichtner.Xr mdoc 7
140070c62a6SFranco Fichtneror
14154ba9607SSascha Wildner.Xr man 7 .
14254ba9607SSascha Wildner.It
14354ba9607SSascha Wildner.Dv FORM_CAT No = 0x02 :
14454ba9607SSascha WildnerThe manual page is preformatted.
14554ba9607SSascha Wildner.El
14654ba9607SSascha Wildner.It
14754ba9607SSascha WildnerZero to three NUL bytes for padding.
14854ba9607SSascha Wildner.El
14954ba9607SSascha Wildner.Pp
15054ba9607SSascha WildnerThe macros table consists of:
15154ba9607SSascha Wildner.Pp
15254ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
15354ba9607SSascha Wildner.It
15454ba9607SSascha WildnerThe number of different macro keys, currently 36.
15554ba9607SSascha WildnerThe ordering of macros is defined in
15654ba9607SSascha Wildner.In mansearch.h
15754ba9607SSascha Wildnerand the significance of the macro keys is documented in
158070c62a6SFranco Fichtner.Xr apropos 1 .
15954ba9607SSascha Wildner.It
16054ba9607SSascha WildnerFor each macro key, one pointer to the respective macro table.
16154ba9607SSascha Wildner.It
16254ba9607SSascha WildnerFor each macro key, the macro table (variable length).
16354ba9607SSascha Wildner.El
16454ba9607SSascha Wildner.Pp
16554ba9607SSascha WildnerEach macro table consists of:
16654ba9607SSascha Wildner.Pp
16754ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
16854ba9607SSascha Wildner.It
16954ba9607SSascha WildnerThe number of entries in the table.
17054ba9607SSascha Wildner.It
17154ba9607SSascha WildnerFor each entry:
17254ba9607SSascha Wildner.Bl -dash -compact -offset 2n -width 1n
17354ba9607SSascha Wildner.It
17454ba9607SSascha WildnerOne pointer to the value of the macro key.
17554ba9607SSascha WildnerEach value is a string of text taken from some macro invocation.
17654ba9607SSascha Wildner.It
17754ba9607SSascha WildnerOne pointer to the list of pages.
17854ba9607SSascha Wildner.El
17954ba9607SSascha Wildner.It
18054ba9607SSascha WildnerFor each entry, the value of the macro key.
18154ba9607SSascha Wildner.It
18254ba9607SSascha WildnerZero to three NUL bytes for padding.
18354ba9607SSascha Wildner.It
18454ba9607SSascha WildnerFor each entry, one or more pointers to pages in the pages table,
18554ba9607SSascha Wildnerpointing to the pointer to the list of names,
18654ba9607SSascha Wildnerfollowed by the number 0.
187070c62a6SFranco Fichtner.El
188070c62a6SFranco Fichtner.Sh FILES
18954ba9607SSascha Wildner.Bl -tag -width /usr/share/man/mandoc.db -compact
19054ba9607SSascha Wildner.It Pa /usr/share/man/mandoc.db
191070c62a6SFranco FichtnerThe manual page database for the base system.
192*f3c0e433SSascha Wildner.\".It Pa /usr/X11R6/man/mandoc.db
193*f3c0e433SSascha Wildner.\"The same for the
194*f3c0e433SSascha Wildner.\".Xr X 7
195*f3c0e433SSascha Wildner.\"Window System.
19654ba9607SSascha Wildner.It Pa /usr/local/man/mandoc.db
197070c62a6SFranco FichtnerThe same for
198*f3c0e433SSascha Wildner.Xr dports 7 .
199070c62a6SFranco Fichtner.El
200*f3c0e433SSascha Wildner.\".Pp
201*f3c0e433SSascha Wildner.\"A program to dump
202*f3c0e433SSascha Wildner.\".Nm
203*f3c0e433SSascha Wildner.\"files in a human-readable format suitable for
204*f3c0e433SSascha Wildner.\".Xr diff 1
205*f3c0e433SSascha Wildner.\"is provided in the directory
206*f3c0e433SSascha Wildner.\".Pa /usr/src/regress/usr.bin/mandoc/db/dbm_dump/ .
207070c62a6SFranco Fichtner.Sh SEE ALSO
208070c62a6SFranco Fichtner.Xr apropos 1 ,
209070c62a6SFranco Fichtner.Xr man 1 ,
210070c62a6SFranco Fichtner.Xr whatis 1 ,
211070c62a6SFranco Fichtner.Xr makewhatis 8
212070c62a6SFranco Fichtner.Sh HISTORY
213070c62a6SFranco FichtnerA manual page database
214070c62a6SFranco Fichtner.Pa /usr/lib/whatis
215070c62a6SFranco Fichtnerfirst appeared in
216070c62a6SFranco Fichtner.Bx 2 .
217070c62a6SFranco FichtnerThe present format first appeared in
21854ba9607SSascha Wildner.Ox 6.1 .
219070c62a6SFranco Fichtner.Sh AUTHORS
220070c62a6SFranco Fichtner.An -nosplit
221070c62a6SFranco FichtnerThe original version of
222070c62a6SFranco Fichtner.Xr makewhatis 8
223070c62a6SFranco Fichtnerwas written by
224070c62a6SFranco Fichtner.An Bill Joy
225070c62a6SFranco Fichtnerin 1979.
226070c62a6SFranco FichtnerThe present database format was designed by
227070c62a6SFranco Fichtner.An Ingo Schwarze Aq Mt schwarze@openbsd.org
22854ba9607SSascha Wildnerin 2016.
229