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

  
 
  

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 man-
     ual  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 ordering
       -  NUL-terminated strings
       -  lists of NUL-terminated strings, terminated by a second NUL character

     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  mea-
     sured 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 ma-
	       chine-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  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  ap-
	       pears 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 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 re-
	  spective manpath.  This list includes  hard  links,  soft  links,  and
	  links simulated with .so roff(7) requests.  The first filename is pre-
	  ceded 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 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 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 15.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+15.1.quarterly>

home | help