1/*	$Vendor-Id: apropos_db.h,v 1.11 2011/12/16 12:06:35 kristaps Exp $ */
2/*
3 * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17#ifndef APROPOS_H
18#define APROPOS_H
19
20enum	restype {
21	RESTYPE_MAN, /* man(7) file */
22	RESTYPE_MDOC, /* mdoc(7) file */
23	RESTYPE_CAT /* pre-formatted file */
24};
25
26struct	res {
27	enum restype	 type; /* input file type */
28	char		*file; /* file in file-system */
29	char		*cat; /* category (3p, 3, etc.) */
30	char		*title; /* title (FOO, etc.) */
31	char		*arch; /* arch (or empty string) */
32	char		*desc; /* description (from Nd) */
33	unsigned int	 rec; /* record in index */
34	/*
35	 * The index volume.  This indexes into the array of directories
36	 * searched for manual page databases.
37	 */
38	unsigned int	 volume;
39};
40
41struct	opts {
42	const char	*arch; /* restrict to architecture */
43	const char	*cat; /* restrict to manual section */
44};
45
46__BEGIN_DECLS
47
48struct	expr;
49
50int	 	 apropos_search(int, char **, const struct opts *,
51			const struct expr *, size_t, void *,
52			void (*)(struct res *, size_t, void *));
53struct	expr	*exprcomp(int, char *[], size_t *);
54void		 exprfree(struct expr *);
55struct	expr	*termcomp(int, char *[], size_t *);
56
57__END_DECLS
58
59#endif /*!APROPOS_H*/
60