]> git.cameronkatri.com Git - mandoc.git/blobdiff - apropos_db.h
Small tweaks for release.
[mandoc.git] / apropos_db.h
index 7801b1261d5bbd5a3c7b1bae910ae83cb01470d3..72d4c204a3918be3d52f831f6fd50fd6195503b9 100644 (file)
@@ -1,6 +1,6 @@
-/*     $Id: apropos_db.h,v 1.2 2011/11/13 10:49:57 schwarze Exp $ */
+/*     $Id: apropos_db.h,v 1.13 2012/03/24 01:46:25 kristaps Exp $ */
 /*
- * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
 #ifndef APROPOS_H
 #define APROPOS_H
 
-struct rec {
+enum   restype {
+       RESTYPE_MAN, /* man(7) file */
+       RESTYPE_MDOC, /* mdoc(7) file */
+       RESTYPE_CAT /* pre-formatted file */
+};
+
+struct res {
+       enum restype     type; /* input file type */
        char            *file; /* file in file-system */
        char            *cat; /* category (3p, 3, etc.) */
        char            *title; /* title (FOO, etc.) */
@@ -25,8 +32,13 @@ struct       rec {
        char            *desc; /* description (from Nd) */
        unsigned int     rec; /* record in index */
        /*
-        * By the time the apropos_search() callback is called, these
-        * are superfluous.
+        * The index volume.  This indexes into the array of directories
+        * searched for manual page databases.
+        */
+       unsigned int     volume;
+       /*
+        * The following fields are used internally.
+        *
         * Maintain a binary tree for checking the uniqueness of `rec'
         * when adding elements to the results array.
         * Since the results array is dynamic, use offset in the array
@@ -34,6 +46,8 @@ struct        rec {
         */
        int              lhs;
        int              rhs;
+       int              matched; /* expression is true */
+       int             *matches; /* partial truth evaluations */
 };
 
 struct opts {
@@ -45,12 +59,14 @@ __BEGIN_DECLS
 
 struct expr;
 
-void            apropos_search(const struct opts *, 
-                       const struct expr *, void *
-                       void (*)(struct rec *, size_t, void *));
-
-struct expr    *exprcomp(int, char *[], int);
+int             apropos_search(int, char **, const struct opts *,
+                       const struct expr *, size_t
+                       void *, size_t *, struct res **,
+                       void (*)(struct res *, size_t, void *));
+struct expr    *exprcomp(int, char *[], size_t *);
 void            exprfree(struct expr *);
+void            resfree(struct res *, size_t);
+struct expr    *termcomp(int, char *[], size_t *);
 
 __END_DECLS