MANSEARCH(3) | Library Functions Manual | MANSEARCH(3) |
mansearch
— search
manual page databases
#include
<stdint.h>
#include
<manconf.h>
#include
<mansearch.h>
int
mansearch
(const struct mansearch
*search, const struct manpaths *paths,
int argc, char *argv[],
struct manpage **res, size_t
*sz);
The
mansearch
()
function returns information about manuals matching a search query from a
mandoc.db(5) database.
The query arguments are as follows:
<mansearch.h>
.<manconf.h>
.The output arguments are as follows:
<mansearch.h>
.
The user is expected to call
free(3) on the
file, names, and
output fields of all structures, as well as the
res array itself.For each manual page tree, the search is done in two steps. In the first step, a list of pages matching the search criteria is built. In the second step, the requested information about these pages is retrieved from the database and assembled into the res array.
All function mentioned here are defined in the file mansearch.c.
Command line parsing is done by the function
exprcomp
() building a singly linked list of
expr structures, using the helper functions
expr_and
() and
exprterm
().
The names, sections, and architectures of the manuals found are
assembled into the names field of the result structure
by the function buildnames
().
The mansearch
() subsystem first appeared
in OpenBSD 5.6.
A module to search manual page databases was first written by Kristaps Dzonsons <kristaps@bsd.lv> in 2011, at first using the Berkeley DB; he rewrote it for SQLite3 in 2012, and Ingo Schwarze <schwarze@openbsd.org> removed the dependency on SQLite3 in 2016.
March 30, 2017 | OpenBSD 6.7 |