=================================================================== RCS file: /cvs/mandoc/Attic/mandocdb.8,v retrieving revision 1.1 retrieving revision 1.9 diff -u -p -r1.1 -r1.9 --- mandoc/Attic/mandocdb.8 2011/07/14 14:36:37 1.1 +++ mandoc/Attic/mandocdb.8 2011/11/29 11:17:47 1.9 @@ -1,4 +1,4 @@ -.\" $Id: mandocdb.8,v 1.1 2011/07/14 14:36:37 schwarze Exp $ +.\" $Id: mandocdb.8,v 1.9 2011/11/29 11:17:47 kristaps Exp $ .\" .\" Copyright (c) 2011 Kristaps Dzonsons .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: July 14 2011 $ +.Dd $Mdocdate: November 29 2011 $ .Dt MANDOCDB 8 .Os .Sh NAME @@ -22,53 +22,78 @@ .Nd index UNIX manuals .Sh SYNOPSIS .Nm -.Op Fl ruv -.Op Fl d Ar dir -.Ar +.Op Fl av +.Op Ar dir ... +.Nm +.Op Fl v +.Fl d Ar dir +.Op Ar +.Nm +.Op Fl v +.Fl u Ar dir +.Op Ar .Sh DESCRIPTION The .Nm utility extracts keywords from .Ux -manuals and indexes them for fast retrieval. +manuals and indexes them in a +.Sx Keyword Database +and +.Sx Index Database +for fast retrieval. +.Pp +By default, +.Nm +creates databases in each +.Ar dir +using the files +.Sm off +.Sy man Ar section Li / +.Op Ar arch Li / +.Ar title . section +.Sm on +and +.Sm off +.Sy cat Ar section Li / +.Op Ar arch Li / +.Ar title . Sy 0 +.Sm on +in that directory; +existing databases are truncated. +If +.Ar dir +is not provided, +.Nm +uses the default paths stipulated by +.Xr man 1 . +.Pp The arguments are as follows: .Bl -tag -width Ds +.It Fl a +Use all directories and files found below +.Ar dir ... . .It Fl d Ar dir -The directory into which to write the keyword and index databases. -.It Ar -Read input from zero or more files in -.Xr mdoc 7 -or -.Xr man 7 -.Ux -manual format. -.It Fl r -Remove entries. -This will remove the index and keyword references. -If the record is not found, it is ignored. -.It Fl u -Update the record. -This will first remove the record (as in -.Fl r ) -then re-add it. +Merge (remove and re-add) +.Ar +to the database in +.Ar dir +without truncating it. +.It Fl u Ar dir +Remove +.Ar +from the database in +.Ar dir +without truncating it. .It Fl v -Verbose output. -If specified once, prints the name of each indexed file. -If twice, prints keywords for each file. +Verbose operation. +Use once to display all files added or removed and twice for keywords as +well. .El .Pp -By default, -.Nm -constructs a new -.Sx Index Database -and -.Sx Keyword Database -in the current working directory. -Existing databases are truncated. -.Pp -If fatal parse errors are encountered, the offending file is printed to -stderr, omitted from the index, and the parse continues with the next -input file. +If fatal parse errors are encountered while parsing, the offending file +is printed to stderr, omitted from the index, and the parse continues +with the next input file. .Ss Index Database The index database, .Pa mandoc.index , @@ -78,78 +103,101 @@ database with record values consisting of .Pp .Bl -enum -compact .It -a nil-terminated filename, +the string +.Cm mdoc , +.Cm man , +or +.Cm cat +to indicate the file type +.Po +file in +.Xr mdoc 7 , +.Xr man 7 , +and post-formatted, respectively +.Pc , .It -a nil-terminated manual section, +the filename, .It -a nil-terminated manual title, +the manual section, .It -a nil-terminated architecture -.Pq this is not often available +the manual title, .It -and a nil-terminated description. +the architecture +.Pq often empty , +.It +and the description. .El .Pp -Both the manual section and description may be zero-length. +Each of the above is NUL-terminated. +.Pp +Both the manual section and description may be zero-length if the record +is unassigned. Entries are sequentially-numbered, but the filenames are unordered. .Ss Keyword Database The keyword database, .Pa mandoc.db , is a .Xr btree 3 -database of nil-terminated keywords (record length is non-zero string +database of NUL-terminated keywords (record length is non-zero string length plus one) mapping to a 8-byte binary field consisting of the keyword type and source .Sx Index Database record number. -The type, a 32-bit bit-mask in host order, consists of the following -fields: +The type, a 64-bit bit-mask in host order, consists of the following +values mapping into +.Xr mdoc 7 +macro identifiers: .Pp -.Bl -tag -width Ds -offset indent -compact -.It Li 0x01 -The name of a manual page as given in the NAME section. -.It Li 0x02 -A function prototype name as given in the SYNOPSIS section. -.It Li 0x04 -A utility name as given in the SYNOPSIS section. -.It Li 0x08 -An include file as given in the SYNOPSIS section. -.It Li 0x10 -A variable name as given in the SYNOPSIS section. -.It Li 0x20 -A standard as given in the STANDARDS section. -.It Li 0x40 -An author as given in the AUTHORS section. -.It Li 0x80 -A configuration as given in the SYNOPSIS section. -.It Li 0x100 -Free-form descriptive text as given in the NAME section. -.It Li 0x200 -Cross-links between manuals. -Listed as the link name, then a period, then the link section. -If the link has no section, the period terminates the string. -.It Li 0x400 -Path reference as given in the FILES section. -.It Li 0x800 -Environment variable as given in the ENVIRONMENT section. -.It Li 0x1000 -Error codes as given in the ERRORS section. +.Bl -column "x0x0000000000000001ULLx" "xLix" -offset indent -compact +.It Li 0x0000000000000001ULL Ta \&An +.It Li 0x0000000000000002ULL Ta \&Ar +.It Li 0x0000000000000004ULL Ta \&At +.It Li 0x0000000000000008ULL Ta \&Bsx +.It Li 0x0000000000000010ULL Ta \&Bx +.It Li 0x0000000000000020ULL Ta \&Cd +.It Li 0x0000000000000040ULL Ta \&Cm +.It Li 0x0000000000000080ULL Ta \&Dv +.It Li 0x0000000000000100ULL Ta \&Dx +.It Li 0x0000000000000200ULL Ta \&Em +.It Li 0x0000000000000400ULL Ta \&Er +.It Li 0x0000000000000800ULL Ta \&Ev +.It Li 0x0000000000001000ULL Ta \&Fa +.It Li 0x0000000000002000ULL Ta \&Fl +.It Li 0x0000000000004000ULL Ta \&Fn +.It Li 0x0000000000008000ULL Ta \&Ft +.It Li 0x0000000000010000ULL Ta \&Fx +.It Li 0x0000000000020000ULL Ta \&Ic +.It Li 0x0000000000040000ULL Ta \&In +.It Li 0x0000000000080000ULL Ta \&Lb +.It Li 0x0000000000100000ULL Ta \&Li +.It Li 0x0000000000200000ULL Ta \&Lk +.It Li 0x0000000000400000ULL Ta \&Ms +.It Li 0x0000000000800000ULL Ta \&Mt +.It Li 0x0000000001000000ULL Ta \&Nd +.It Li 0x0000000002000000ULL Ta \&Nm +.It Li 0x0000000004000000ULL Ta \&Nx +.It Li 0x0000000008000000ULL Ta \&Ox +.It Li 0x0000000010000000ULL Ta \&Pa +.It Li 0x0000000020000000ULL Ta \&Rs +.It Li 0x0000000040000000ULL Ta \&Sh +.It Li 0x0000000080000000ULL Ta \&Ss +.It Li 0x0000000100000000ULL Ta \&St +.It Li 0x0000000200000000ULL Ta \&Sy +.It Li 0x0000000400000000ULL Ta \&Tn +.It Li 0x0000000800000000ULL Ta \&Va +.It Li 0x0000001000000000ULL Ta \&Vt +.It Li 0x0000002000000000ULL Ta \&Xr .El .Pp The last four bytes are a host-ordered record number within the .Sx Index Database . -.Pp -The -.Nm -utility is -.Ud .Sh IMPLEMENTATION NOTES The time to construct a new database pair grows linearly with the -number of keywords in the input. +number of keywords in the input files. However, removing or updating entries with -.Fl r +.Fl u or -.Fl u , +.Fl d , respectively, grows as a multiple of the index length and input size. .Sh FILES .Bl -tag -width Ds @@ -183,9 +231,12 @@ to exit at once, possibly in the middle of parsing or The output databases are corrupt and should be removed . .El .Sh SEE ALSO -.Xr mandoc 1 +.Xr man 1 , +.Xr btree 3 , +.Xr recno 3 .Sh AUTHORS The .Nm utility was written by -.An Kristaps Dzonsons Aq kristaps@bsd.lv . +.An Kristaps Dzonsons , +.Mt kristaps@bsd.lv .