version 1.17.2.1, 2013/09/18 01:04:07 |
version 1.24, 2014/04/03 16:27:28 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
|
.\" Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> |
.\" |
.\" |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" purpose with or without fee is hereby granted, provided that the above |
.\" purpose with or without fee is hereby granted, provided that the above |
|
|
.Nd index UNIX manuals |
.Nd index UNIX manuals |
.Sh SYNOPSIS |
.Sh SYNOPSIS |
.Nm |
.Nm |
.Op Fl avW |
.Op Fl aDnpQ |
|
.Op Fl T Cm utf8 |
.Op Fl C Ar file |
.Op Fl C Ar file |
.Nm |
.Nm |
.Op Fl avW |
.Op Fl aDnpQ |
|
.Op Fl T Cm utf8 |
.Ar dir ... |
.Ar dir ... |
.Nm |
.Nm |
.Op Fl vW |
.Op Fl DnpQ |
|
.Op Fl T Cm utf8 |
.Fl d Ar dir |
.Fl d Ar dir |
.Op Ar |
.Op Ar |
.Nm |
.Nm |
.Op Fl vW |
.Op Fl Dnp |
|
.Op Fl T Cm utf8 |
.Fl u Ar dir |
.Fl u Ar dir |
.Op Ar |
.Op Ar |
.Nm |
.Nm |
|
.Op Fl Q |
.Fl t Ar |
.Fl t Ar |
.Sh DESCRIPTION |
.Sh DESCRIPTION |
The |
The |
.Nm |
.Nm |
utility extracts keywords from |
utility extracts keywords from |
.Ux |
.Ux |
manuals and indexes them in a |
manuals and indexes them in a database for fast retrieval by |
.Sx Keyword Database |
|
and |
|
.Sx Index Database |
|
for fast retrieval by |
|
.Xr apropos 1 , |
.Xr apropos 1 , |
.Xr whatis 1 , |
.Xr whatis 1 , |
and |
and |
|
|
.Pp |
.Pp |
By default, |
By default, |
.Nm |
.Nm |
creates databases in each |
creates a database in each |
.Ar dir |
.Ar dir |
using the files |
using the files |
.Sm off |
.Sm off |
|
|
.Op Ar arch Li / |
.Op Ar arch Li / |
.Ar title . Sy 0 |
.Ar title . Sy 0 |
.Sm on |
.Sm on |
in that directory; |
in that directory. |
existing databases are truncated. |
Existing databases are replaced. |
If |
If |
.Ar dir |
.Ar dir |
is not provided, |
is not provided, |
.Nm |
.Nm |
uses the default paths stipulated by |
uses the default paths stipulated by |
.Xr man 1 . |
.Xr manpath 1 , |
|
or |
|
.Xr man.conf 5 . |
.Pp |
.Pp |
The arguments are as follows: |
The arguments are as follows: |
.Bl -tag -width "-C file" |
.Bl -tag -width "-C file" |
Line 90 Specify an alternative configuration |
|
Line 94 Specify an alternative configuration |
|
in |
in |
.Xr man.conf 5 |
.Xr man.conf 5 |
format. |
format. |
|
.It Fl D |
|
Display all files added or removed to the index. |
|
With a second |
|
.Fl D , |
|
also show all keyswords added for each file. |
.It Fl d Ar dir |
.It Fl d Ar dir |
Merge (remove and re-add) |
Merge (remove and re-add) |
.Ar |
.Ar |
to the database in |
to the database in |
.Ar dir |
.Ar dir . |
without truncating it. |
.It Fl n |
|
Do not create or modify any database; |
|
scan and parse only. |
|
.It Fl p |
|
Print warnings about potential problems with manual pages |
|
to the standard error output. |
|
.It Fl Q |
|
Quickly build reduced-size databases |
|
by reading only the NAME sections of manuals. |
|
The resulting databases will usually contain names and descriptions only. |
|
.It Fl T Cm utf8 |
|
Use UTF-8 encoding instead of ASCII for strings stored in the databases. |
.It Fl t Ar |
.It Fl t Ar |
Check the given |
Check the given |
.Ar files |
.Ar files |
for potential problems. |
for potential problems. |
No databases are modified. |
|
Implies |
Implies |
.Fl a |
.Fl a , |
|
.Fl n , |
and |
and |
.Fl W . |
.Fl p . |
All diagnostic messages are printed to the standard output; |
All diagnostic messages are printed to the standard output; |
the standard error output is not used. |
the standard error output is not used. |
.It Fl u Ar dir |
.It Fl u Ar dir |
Remove |
Remove |
.Ar |
.Ar |
from the database in |
from the database in |
.Ar dir |
.Ar dir . |
without truncating it. |
|
.It Fl v |
|
Display all files added or removed to the index. |
|
.It Fl W |
|
Print warnings about potential problems with manual pages |
|
to the standard error output. |
|
.El |
.El |
.Pp |
.Pp |
If fatal parse errors are encountered while parsing, the offending file |
If fatal parse errors are encountered while parsing, the offending file |
is printed to stderr, omitted from the index, and the parse continues |
is printed to stderr, omitted from the index, and the parse continues |
with the next input file. |
with the next input file. |
.Ss Index Database |
|
The index database, |
|
.Pa mandoc.index , |
|
is a |
|
.Xr recno 3 |
|
database with record values consisting of |
|
.Pp |
|
.Bl -enum -compact |
|
.It |
|
the character |
|
.Cm d , |
|
.Cm a , |
|
or |
|
.Cm c |
|
to indicate the file type |
|
.Po |
|
.Xr mdoc 7 , |
|
.Xr man 7 , |
|
and post-formatted, respectively |
|
.Pc , |
|
.It |
|
the filename relative to the databases' path, |
|
.It |
|
the manual section, |
|
.It |
|
the manual title, |
|
.It |
|
the architecture |
|
.Pq often empty , |
|
.It |
|
and the description. |
|
.El |
|
.Pp |
|
Each of the above is NUL-terminated. |
|
.Pp |
|
If the record value is zero-length, it is unassigned. |
|
.Ss Keyword Database |
|
The keyword database, |
|
.Pa mandoc.db , |
|
is a |
|
.Xr btree 3 |
|
database of NUL-terminated keywords (record length is non-zero string |
|
length plus one) mapping to a 16-byte binary field consisting of the |
|
64-bit keyword type and the 64-bit |
|
.Sx Index Database |
|
record number, both in network-byte order. |
|
.Pp |
|
The type bit-mask consists of the following |
|
values mapping into |
|
.Xr mdoc 7 |
|
macro identifiers: |
|
.Pp |
|
.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 |
|
.Sh IMPLEMENTATION NOTES |
|
The time to construct a new database pair grows linearly with the |
|
number of keywords in the input files. |
|
However, removing or updating entries with |
|
.Fl u |
|
or |
|
.Fl d , |
|
respectively, grows as a multiple of the index length and input size. |
|
.Sh FILES |
.Sh FILES |
.Bl -tag -width Ds |
.Bl -tag -width Ds |
.It Pa mandoc.db |
.It Pa mandoc.db |
A |
A database of manpages relative to the directory of the file. |
.Xr btree 3 |
This file is portable across architectures and systems, so long as the |
keyword database mapping keywords to a type and file reference in |
manpage hierarchy it indexes does not change. |
.Pa mandoc.index . |
|
.It Pa mandoc.index |
|
A |
|
.Xr recno 3 |
|
database of indexed file-names. |
|
.It Pa /etc/man.conf |
.It Pa /etc/man.conf |
The default |
The default |
.Xr man 1 |
.Xr man 1 |
Line 258 Such errors cause |
|
Line 167 Such errors cause |
|
to exit at once, possibly in the middle of parsing or formatting a file. |
to exit at once, possibly in the middle of parsing or formatting a file. |
The output databases are corrupt and should be removed. |
The output databases are corrupt and should be removed. |
.El |
.El |
.Sh DIAGNOSTICS |
|
If the following errors occur, the |
|
.Nm |
|
databases should be rebuilt. |
|
.Bl -diag |
|
.It "%s: Corrupt database" |
|
The keyword database file indicated by |
|
.Pa %s |
|
is unreadable. |
|
.It "%s: Corrupt index" |
|
The index database file indicated by |
|
.Pa %s |
|
is unreadable. |
|
.It "%s: Path too long" |
|
The file |
|
.Pa %s |
|
is too long. |
|
This usually indicates database corruption or invalid command-line |
|
arguments. |
|
.El |
|
.Sh SEE ALSO |
.Sh SEE ALSO |
.Xr apropos 1 , |
.Xr apropos 1 , |
.Xr man 1 , |
.Xr man 1 , |
.Xr whatis 1 , |
.Xr whatis 1 , |
.Xr btree 3 , |
|
.Xr recno 3 , |
|
.Xr man.conf 5 |
.Xr man.conf 5 |
.Sh HISTORY |
.Sh HISTORY |
A |
A |
Line 295 It was rewritten in |
|
Line 182 It was rewritten in |
|
for |
for |
.Ox 2.7 |
.Ox 2.7 |
and in C for |
and in C for |
.Ox 5.1 . |
.Ox 5.6 . |
.Pp |
.Pp |
The |
The |
.Ar dir |
.Ar dir |
argument first appeared in |
argument first appeared in |
.Nx 1.0 ; |
.Nx 1.0 ; |
the options |
the options |
.Fl dtu |
.Fl dpt |
in |
in |
.Ox 2.7 ; |
.Ox 2.7 ; |
|
the option |
|
.Fl u |
|
in |
|
.Ox 3.4 ; |
and the options |
and the options |
.Fl aCvW |
.Fl aCDnQT |
in |
in |
.Ox 5.1 . |
.Ox 5.6 . |
.Sh AUTHORS |
.Sh AUTHORS |
.An -nosplit |
.An -nosplit |
.An Bill Joy |
.An Bill Joy |
Line 321 started the Perl version in 2000, |
|
Line 212 started the Perl version in 2000, |
|
and the current version of |
and the current version of |
.Nm |
.Nm |
was written by |
was written by |
.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv . |
.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv |
|
and |
|
.An Ingo Schwarze Aq Mt schwarze@openbsd.org . |