from small one page howto to huge articles all in one place
Last additions:
May 25th. 2007:
April, 26th. 2006:
|
You are here: manpages
MANDOC.DB
Section: File Formats (5) Index
Return to Main Contents
BSD mandoc
NAME
mandoc.db
- manual page database
DESCRIPTION
The
file format is used to store information about installed manual
pages to facilitate semantic searching for manuals.
Each manual page tree contains its own
file; see
Sx FILES
for examples.
Such database files are generated by
makewhatis(8)
and used by
man(1),
apropos(1)
and
whatis(1).
The file format uses three datatypes:
- 3-bit signed integer numbers in big endian (network) byte ordering
-
- NU-terminated strings
-
- lists of NU-terminated strings, terminated by a second NUL character
-
Numbers are aligned to fou-byte boundaries; where they follow
strings or lists of strings, padding with additional NUL characters
occurs.
Some, but not all, numbers point to positions in the file.
These pointers are measured in bytes, and the first byte of the
file is considered to be byte 0.
Each file consists of:
- One magic number, 0x3a7d0cdb.
-
- One version number, currently 1.
-
- One pointer to the macros table.
-
- One pointer to the final magic number.
-
- The pages table (variable length).
-
- The macros table (variable length).
-
- The magic number once again, 0x3a7d0cdb.
-
The pages table contains one entry for each physical manual page
file, no matter how many hard and soft links it may have in the
file system.
The pages table consists of:
- The number of pages in the database.
-
- For each page:
-
- One pointer to the list of names.
-
- One pointer to the list of sections.
-
- One pointer to the list of architectures
-
or 0 if the page is machin-independent.
- One pointer to the on-line description string.
-
- One pointer to the list of filenames.
-
- For each page, the list of names.
-
Each name is preceded by a single byte indicating the sources of the name.
The meaning of the bits is:
- 0x10: The name appears in a filename.
-
- 0x08: The name appears in a header line, i.e. in a .Dt or .TH macro.
-
- 0x04: The name is the first one in the title line, i.e. it appears
-
in the first .Nm macro in the NAME section.
- 0x02: The name appears in any .Nm macro in the NAME section.
-
- 0x01: The name appears in an .Nm block in the SYNOPSIS section.
-
- For each page, the list of sections.
-
Each section is given as a string, not as a number.
- For each architectur-dependent page, the list of architectures.
-
- For each page, the on-line description string taken from the .Nd macro.
-
- For each page, the list of filenames relative to the root of the
-
respective manpath.
This list includes hard links, soft links, and links simulated
with .so
roff(7)
requests.
The first filename is preceded by a single byte
having the following significance:
- FORM_SRC = 0x01
-
The file format is
mdoc(7)
or
man(7).
- FORM_CAT = 0x02
-
The manual page is preformatted.
- Zero to three NUL bytes for padding.
-
The macros table consists of:
- The number of different macro keys, currently 36.
-
The ordering of macros is defined in
In mansearch.h
and the significance of the macro keys is documented in
apropos(1).
- For each macro key, one pointer to the respective macro table.
-
- For each macro key, the macro table (variable length).
-
Each macro table consists of:
- The number of entries in the table.
-
- For each entry:
-
- One pointer to the value of the macro key.
-
Each value is a string of text taken from some macro invocation.
- One pointer to the list of pages.
-
- For each entry, the value of the macro key.
-
- Zero to three NUL bytes for padding.
-
- For each entry, one or more pointers to pages in the pages table,
-
pointing to the pointer to the list of names,
followed by the number 0.
FILES
- /usr/share/man/mandoc.db
-
The manual page database for the base system.
- /usr/X11R6/man/mandoc.db
-
The same for the
X(7)
Window System.
- /usr/local/man/mandoc.db
-
The same for
packages(7).
A program to dump
files in a huma-readable format suitable for
diff(1)
is provided in the directory
/usr/src/regress/usr.bin/mandoc/db/dbm_dump/
SEE ALSO
apropos(1),
man(1),
whatis(1),
makewhatis(8)
HISTORY
A manual page database
/usr/lib/whatis
first appeared in
BSD 2
The present format first appeared in
Ox 6.1 .
AUTHORS
An -nosplit
The original version of
makewhatis(8)
was written by
An Bill Joy
in 1979.
The present database format was designed by
An Ingo Schwarze Aq Mt schwarze@openbsd.org
in 2016.
Index
- NAME
-
- DESCRIPTION
-
- FILES
-
- SEE ALSO
-
- HISTORY
-
- AUTHORS
-
|