]> git.cameronkatri.com Git - mandoc.git/commitdiff
Put section and architecture info into the keys table,
authorIngo Schwarze <schwarze@openbsd.org>
Sun, 5 Jan 2014 00:29:54 +0000 (00:29 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Sun, 5 Jan 2014 00:29:54 +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]

mandocdb.c
mansearch.c
mansearch.h

index 28d11e0bb0569e1557e5a6c30b549b724c1ba5b7..689951a3d32c372ebef4e355b520d43e19cbef32 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mandocdb.c,v 1.96 2014/01/02 22:44:10 schwarze Exp $ */
+/*     $Id: mandocdb.c,v 1.97 2014/01/05 00:29:54 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -1024,9 +1024,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 7fb0a13c97ae89aff9a3aa5de785504121463ae0..886ceef3d0af66e64db73b35cc1bbf5ebd05bb8c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mansearch.c,v 1.13 2014/01/04 23:43:53 schwarze Exp $ */
+/*     $Id: mansearch.c,v 1.14 2014/01/05 00:29:54 schwarze Exp $ */
 /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -120,6 +120,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 405826f08185b3a9580502cc1ea776ea66cdf800..0af83c607ee5c39b7761fd9ab3d4a5e27e2a16df 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mansearch.h,v 1.6 2013/12/31 03:41:14 schwarze Exp $ */
+/*     $Id: mansearch.h,v 1.7 2014/01/05 00:29:54 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