summaryrefslogtreecommitdiff
path: root/keywords.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>1999-10-16 15:23:27 +0000
committerSimon Tatham <anakin@pobox.com>1999-10-16 15:23:27 +0000
commit00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4 (patch)
treec96a462edd1b2ebb631f90420ceb51e266114576 /keywords.c
parent9972b0f0d1ce6e08ce6f9505980c9c889ae994bc (diff)
downloadhalibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.zip
halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.gz
halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.bz2
halibut-00f6e0ee13c753d98e8665ad1ff2e992f43ef6e4.tar.xz
Further development: index work, phase I
[originally from svn r237]
Diffstat (limited to 'keywords.c')
-rw-r--r--keywords.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/keywords.c b/keywords.c
index dad787d..c2d9ed6 100644
--- a/keywords.c
+++ b/keywords.c
@@ -93,6 +93,8 @@ keywordlist *get_keywords(paragraph *source) {
kl->nkeywords = 0;
kl->size = 0;
kl->keys = NULL;
+ kl->nlooseends = kl->looseendssize = 0;
+ kl->looseends = NULL;
for (; source; source = source->next) {
/*
* Number the chapter / section / list-item / whatever.
@@ -113,6 +115,12 @@ keywordlist *get_keywords(paragraph *source) {
p += ustrlen(p) + 1;
}
}
+ } else {
+ if (kl->nlooseends >= kl->looseendssize) {
+ kl->looseendssize += 32;
+ kl->looseends = resize(kl->looseends, kl->looseendssize);
+ }
+ kl->looseends[kl->nlooseends++] = source->kwtext;
}
}
@@ -125,8 +133,15 @@ keywordlist *get_keywords(paragraph *source) {
void free_keywords(keywordlist *kl) {
int i;
- for (i = 0; i < kl->nkeywords; i++)
+ while (kl->nlooseends)
+ free_word_list(kl->looseends[--kl->nlooseends]);
+ sfree(kl->looseends);
+ for (i = 0; i < kl->nkeywords; i++) {
+ if (kl->keys[i])
+ free_word_list(kl->keys[i]->text);
sfree(kl->keys[i]);
+ }
+ sfree(kl->keys);
sfree(kl);
}