Put section and architecture info into the keys table,
authorschwarze <schwarze@openbsd.org>
Sun, 5 Jan 2014 00:29:49 +0000 (00:29 +0000)
committerschwarze <schwarze@openbsd.org>
Sun, 5 Jan 2014 00:29:49 +0000 (00:29 +0000)
in preparation for removing them from the mpages table,
aiming for cleaner and more uniform interfaces.
Database growth is below 4%, part of which will be reclaimed.

As a bonus, this allows searches like:
./obj/apropos An=kettenis -a arch=ppc
./obj/apropos An=kettenis -a sec~[^4]

usr.bin/mandoc/mandocdb.c
usr.bin/mandoc/mansearch.c
usr.bin/mandoc/mansearch.h

index 6df2dd3..5837be9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mandocdb.c,v 1.53 2014/01/02 22:44:07 schwarze Exp $ */
+/*     $Id: mandocdb.c,v 1.54 2014/01/05 00:29:49 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -1016,9 +1016,17 @@ mpages_merge(struct mchars *mc, struct mparse *mp, int check_reachable)
                        mpage->title =
                            mandoc_strdup(mpage->mlinks->name);
                }
-
-               for (mlink = mpage->mlinks; mlink; mlink = mlink->next)
+               putkey(mpage, mpage->sec, TYPE_sec);
+               putkey(mpage, mpage->arch, TYPE_arch);
+
+               for (mlink = mpage->mlinks; mlink; mlink = mlink->next) {
+                       if ('\0' != *mlink->dsec)
+                               putkey(mpage, mlink->dsec, TYPE_sec);
+                       if ('\0' != *mlink->fsec)
+                               putkey(mpage, mlink->fsec, TYPE_sec);
+                       putkey(mpage, mlink->arch, TYPE_arch);
                        putkey(mpage, mlink->name, TYPE_Nm);
+               }
 
                if (warnings && !use_all) {
                        match = 0;
index 233dca9..e6cb010 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mansearch.c,v 1.4 2014/01/04 23:42:32 schwarze Exp $ */
+/*     $Id: mansearch.c,v 1.5 2014/01/05 00:29:49 schwarze Exp $ */
 /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -112,6 +112,8 @@ static      const struct type types[] = {
        { TYPE_Va,  "Va" },
        { TYPE_Va,  "Vt" },
        { TYPE_Xr,  "Xr" },
+       { TYPE_sec, "sec" },
+       { TYPE_arch,"arch" },
        { ~0ULL,    "any" },
        { 0ULL, NULL }
 };
index 9f7568f..913e5be 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mansearch.h,v 1.2 2013/12/31 03:41:09 schwarze Exp $ */
+/*     $Id: mansearch.h,v 1.3 2014/01/05 00:29:49 schwarze Exp $ */
 /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -58,6 +58,8 @@
 #define        TYPE_Va          0x0000000800000000ULL
 #define        TYPE_Vt          0x0000001000000000ULL
 #define        TYPE_Xr          0x0000002000000000ULL
+#define        TYPE_sec         0x0000004000000000ULL
+#define        TYPE_arch        0x0000008000000000ULL
 
 __BEGIN_DECLS