version 1.1, 2011/07/14 14:36:37 |
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 ruv |
.Op Fl aDnpQ |
.Op Fl d Ar dir |
.Op Fl T Cm utf8 |
.Ar |
.Op Fl C Ar file |
|
.Nm |
|
.Op Fl aDnpQ |
|
.Op Fl T Cm utf8 |
|
.Ar dir ... |
|
.Nm |
|
.Op Fl DnpQ |
|
.Op Fl T Cm utf8 |
|
.Fl d Ar dir |
|
.Op Ar |
|
.Nm |
|
.Op Fl Dnp |
|
.Op Fl T Cm utf8 |
|
.Fl u Ar dir |
|
.Op Ar |
|
.Nm |
|
.Op Fl Q |
|
.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 for fast retrieval. |
manuals and indexes them in a database for fast retrieval by |
The arguments are as follows: |
.Xr apropos 1 , |
.Bl -tag -width Ds |
.Xr whatis 1 , |
.It Fl d Ar dir |
and |
The directory into which to write the keyword and index databases. |
.Xr man 1 Ns 's |
.It Ar |
.Fl k |
Read input from zero or more files in |
option. |
.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. |
|
.It Fl v |
|
Verbose output. |
|
If specified once, prints the name of each indexed file. |
|
If twice, prints keywords for each file. |
|
.El |
|
.Pp |
.Pp |
By default, |
By default, |
.Nm |
.Nm |
constructs a new |
creates a database in each |
.Sx Index Database |
.Ar dir |
|
using the files |
|
.Sm off |
|
.Sy man Ar section Li / |
|
.Op Ar arch Li / |
|
.Ar title . section |
|
.Sm on |
and |
and |
.Sx Keyword Database |
.Sm off |
in the current working directory. |
.Sy cat Ar section Li / |
Existing databases are truncated. |
.Op Ar arch Li / |
|
.Ar title . Sy 0 |
|
.Sm on |
|
in that directory. |
|
Existing databases are replaced. |
|
If |
|
.Ar dir |
|
is not provided, |
|
.Nm |
|
uses the default paths stipulated by |
|
.Xr manpath 1 , |
|
or |
|
.Xr man.conf 5 . |
.Pp |
.Pp |
If fatal parse errors are encountered, the offending file is printed to |
The arguments are as follows: |
stderr, omitted from the index, and the parse continues with the next |
.Bl -tag -width "-C file" |
input file. |
.It Fl a |
.Ss Index Database |
Use all directories and files found below |
The index database, |
.Ar dir ... . |
.Pa mandoc.index , |
.It Fl C Ar file |
is a |
Specify an alternative configuration |
.Xr recno 3 |
.Ar file |
database with record values consisting of |
in |
.Pp |
.Xr man.conf 5 |
.Bl -enum -compact |
format. |
.It |
.It Fl D |
a nil-terminated filename, |
Display all files added or removed to the index. |
.It |
With a second |
a nil-terminated manual section, |
.Fl D , |
.It |
also show all keyswords added for each file. |
a nil-terminated manual title, |
.It Fl d Ar dir |
.It |
Merge (remove and re-add) |
a nil-terminated architecture |
.Ar |
.Pq this is not often available |
to the database in |
.It |
.Ar dir . |
and a nil-terminated description. |
.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 |
|
Check the given |
|
.Ar files |
|
for potential problems. |
|
Implies |
|
.Fl a , |
|
.Fl n , |
|
and |
|
.Fl p . |
|
All diagnostic messages are printed to the standard output; |
|
the standard error output is not used. |
|
.It Fl u Ar dir |
|
Remove |
|
.Ar |
|
from the database in |
|
.Ar dir . |
.El |
.El |
.Pp |
.Pp |
Both the manual section and description may be zero-length. |
If fatal parse errors are encountered while parsing, the offending file |
Entries are sequentially-numbered, but the filenames are unordered. |
is printed to stderr, omitted from the index, and the parse continues |
.Ss Keyword Database |
with the next input file. |
The keyword database, |
|
.Pa mandoc.db , |
|
is a |
|
.Xr btree 3 |
|
database of nil-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: |
|
.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. |
|
.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. |
|
However, removing or updating entries with |
|
.Fl r |
|
or |
|
.Fl u , |
|
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 /etc/man.conf |
.It Pa mandoc.index |
The default |
A |
.Xr man 1 |
.Xr recno 3 |
configuration file. |
database of indexed file-names. |
|
.El |
.El |
.Sh EXIT STATUS |
.Sh EXIT STATUS |
The |
The |
Line 180 error accessing input files. |
|
Line 165 error accessing input files. |
|
Such errors cause |
Such errors cause |
.Nm |
.Nm |
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 SEE ALSO |
.Sh SEE ALSO |
.Xr mandoc 1 |
.Xr apropos 1 , |
.Sh AUTHORS |
.Xr man 1 , |
|
.Xr whatis 1 , |
|
.Xr man.conf 5 |
|
.Sh HISTORY |
|
A |
|
.Nm makewhatis |
|
utility first appeared in |
|
.Bx 2 . |
|
It was rewritten in |
|
.Xr perl 1 |
|
for |
|
.Ox 2.7 |
|
and in C for |
|
.Ox 5.6 . |
|
.Pp |
The |
The |
|
.Ar dir |
|
argument first appeared in |
|
.Nx 1.0 ; |
|
the options |
|
.Fl dpt |
|
in |
|
.Ox 2.7 ; |
|
the option |
|
.Fl u |
|
in |
|
.Ox 3.4 ; |
|
and the options |
|
.Fl aCDnQT |
|
in |
|
.Ox 5.6 . |
|
.Sh AUTHORS |
|
.An -nosplit |
|
.An Bill Joy |
|
wrote the original |
|
.Bx |
|
.Nm makewhatis |
|
in February 1979, |
|
.An Marc Espie |
|
started the Perl version in 2000, |
|
and the current version of |
.Nm |
.Nm |
utility was written by |
was written by |
.An Kristaps Dzonsons Aq kristaps@bsd.lv . |
.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv |
|
and |
|
.An Ingo Schwarze Aq Mt schwarze@openbsd.org . |