summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-06-21 14:16:05 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-06-21 14:16:05 +0000
commitc5f902924457cd786725c1e4e2aed53581908dd7 (patch)
treec44cb001319989e52ee66b0d967d7552fba37451
parent9d5aa6c4998a8c5a2851bb6512ff1d60bc52c386 (diff)
downloadmandoc-c5f902924457cd786725c1e4e2aed53581908dd7.tar.gz
Let descriptions (bit-mask 0x100) also be mined for text. This doubles
the database size (one record for each file), but it's critical information.
-rw-r--r--Makefile2
-rw-r--r--makewhatis.12
-rw-r--r--makewhatis.c21
3 files changed, 19 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 86399a57..c535f105 100644
--- a/Makefile
+++ b/Makefile
@@ -353,7 +353,7 @@ llib-lmandoc.ln: $(MANDOC_LNS)
# You'll need -ldb for Linux.
makewhatis: $(MAKEWHATIS_OBJS) libmandoc.a
- $(CC) -o $@ $(MAKEWHATIS_OBJS) libmandoc.a -ldb
+ $(CC) -o $@ $(MAKEWHATIS_OBJS) libmandoc.a
llib-lmakewhatis.ln: $(MAKEWHATIS_LNS)
$(LINT) $(LINTFLAGS) -Cmakewhatis $(MAKEWHATIS_LNS)
diff --git a/makewhatis.1 b/makewhatis.1
index 73aab84d..9c74a8d5 100644
--- a/makewhatis.1
+++ b/makewhatis.1
@@ -107,6 +107,8 @@ A standard as given in the STANDARDS section.
An author as given in the AUTHORS section.
.It Li 0x80
A configuration as given in the SYNOPSIS section.
+.It Li 0x100
+Free-form descriptive text as given in the NAME section.
.El
.Pp
The last four bytes are a host-ordered record number within the
diff --git a/makewhatis.c b/makewhatis.c
index 84f64508..0523d4b6 100644
--- a/makewhatis.c
+++ b/makewhatis.c
@@ -52,7 +52,7 @@
#define TYPE_STANDARD 0x20
#define TYPE_AUTHOR 0x40
#define TYPE_CONFIG 0x80
-#define TYPE__MAX TYPE_CONFIG
+#define TYPE_DESC 0x100
/* Buffer for storing growable data. */
@@ -695,16 +695,25 @@ static void
pmdoc_Nd(MDOC_ARGS)
{
int first;
+ size_t sz;
for (first = 1, n = n->child; n; n = n->next) {
if (MDOC_TEXT != n->type)
continue;
- if (first)
- buf_appendb(dbuf, n->string, strlen(n->string) + 1);
- else
+
+ if (first) {
+ sz = strlen(n->string) + 1;
+ buf_appendb(dbuf, n->string, sz);
+ buf_appendb(buf, n->string, sz);
+ } else {
buf_append(dbuf, n->string);
+ buf_append(buf, n->string);
+ }
+
first = 0;
}
+
+ hash_put(hash, buf, TYPE_DESC);
}
/* ARGSUSED */
@@ -897,7 +906,9 @@ pman_node(MAN_ARGS)
while (' ' == *start)
start++;
- buf_appendb(dbuf, start, strlen(start) + 1);
+ sz = strlen(start) + 1;
+ buf_appendb(dbuf, start, sz);
+ buf_appendb(buf, start, sz);
}
}