Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MANDOC.DB(5)		      File Formats Manual		  MANDOC.DB(5)

NAME
       mandoc.db -- manual page	database

DESCRIPTION
       The  mandoc.db file format is used to store information about installed
       manual pages to facilitate semantic searching for manuals.  Each	manual
       page tree contains its own mandoc.db file; see "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:

	 -  32-bit  signed integer numbers in big endian (network) byte	order-
	    ing
	 -  NUL-terminated strings
	 -  lists of NUL-terminated strings, terminated	by a second NUL	 char-
	    acter

       Numbers	are aligned to four-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  con-
       sidered 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
		 machine-independent.
	      -	 One pointer to	the one-line description string.
	      -	 One pointer to	the list of filenames.
	 -  For	each page, the list of names.  Each name is preceded by	a sin-
	    gle	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  sec-
		 tion.
	 -  For	 each  page, the list of sections.  Each section is given as a
	    string, not	as a number.
	 -  For	each architecture-dependent page, the list of architectures.
	 -  For	each page, the one-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  <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 num-
	    ber	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 mandoc.db files in a human-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  2BSD.   The
       present format first appeared in	OpenBSD	6.1.

AUTHORS
       The  original version of	makewhatis(8) was written by Bill Joy in 1979.
       The  present  database	format	 was   designed	  by   Ingo   Schwarze
       <schwarze@openbsd.org> in 2016.

FreeBSD	Ports 14.quarterly	August 1, 2016			  MANDOC.DB(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mandoc.db&sektion=5&manpath=FreeBSD+Ports+14.3.quarterly>

home | help