projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix attset so that it points to explain.att
[idzebra-moved-to-github.git]
/
recctrl
/
recgrs.c
diff --git
a/recctrl/recgrs.c
b/recctrl/recgrs.c
index
274c130
..
f45f4d7
100644
(file)
--- a/
recctrl/recgrs.c
+++ b/
recctrl/recgrs.c
@@
-1,5
+1,5
@@
-/* $Id: recgrs.c,v 1.106 2006-02-06 13:34:13 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: recgrs.c,v 1.110 2006-05-19 13:49:35 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
Index Data ApS
This file is part of the Zebra server.
@@
-350,6
+350,7
@@
static int dfa_match_first(struct DFA_state **dfaar, const char *text)
unsigned char c;
for (c = *p++, t = s->trans, i = s->tran_no; --i >= 0; t++)
unsigned char c;
for (c = *p++, t = s->trans, i = s->tran_no; --i >= 0; t++)
+ {
if (c >= t->ch[0] && c <= t->ch[1])
{
while (i >= 0)
if (c >= t->ch[0] && c <= t->ch[1])
{
while (i >= 0)
@@
-359,12
+360,15
@@
static int dfa_match_first(struct DFA_state **dfaar, const char *text)
if (s->rule_no)
return 1;
/* next char */
if (s->rule_no)
return 1;
/* next char */
+ if (!c)
+ return 0;
c = *p++;
for (t = s->trans, i = s->tran_no; --i >= 0; t++)
if (c >= t->ch[0] && c <= t->ch[1])
break;
}
}
c = *p++;
for (t = s->trans, i = s->tran_no; --i >= 0; t++)
if (c >= t->ch[0] && c <= t->ch[1])
break;
}
}
+ }
return 0;
}
return 0;
}
@@
-467,33
+471,20
@@
static void index_xpath_attr (char *tag_path, char *name, char *value,
char *structure, struct recExtractCtrl *p,
RecWord *wrd)
{
char *structure, struct recExtractCtrl *p,
RecWord *wrd)
{
-#if NATTR
wrd->index_name = ZEBRA_XPATH_ELM_BEGIN;
wrd->index_name = ZEBRA_XPATH_ELM_BEGIN;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = 1;
-#endif
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
(*p->tokenAdd)(wrd);
if (value) {
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
(*p->tokenAdd)(wrd);
if (value) {
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 1015;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_CDATA;
wrd->index_type = 'w';
wrd->term_buf = value;
wrd->term_len = strlen(value);
(*p->tokenAdd)(wrd);
}
wrd->index_type = 'w';
wrd->term_buf = value;
wrd->term_len = strlen(value);
(*p->tokenAdd)(wrd);
}
-#if NATTR
wrd->index_name = ZEBRA_XPATH_ELM_END;
wrd->index_name = ZEBRA_XPATH_ELM_END;
-#else
- wrd->attrUse = 2;
-#endif
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
@@
-529,12
+520,8
@@
static void mk_tag_path_full(char *tag_path_full, size_t max, data1_node *n)
static void index_xpath(struct source_parser *sp, data1_node *n,
struct recExtractCtrl *p,
int level, RecWord *wrd,
static void index_xpath(struct source_parser *sp, data1_node *n,
struct recExtractCtrl *p,
int level, RecWord *wrd,
-#if NATTR
char *xpath_index,
int xpath_is_start
char *xpath_index,
int xpath_is_start
-#else
- int use
-#endif
)
{
int i;
)
{
int i;
@@
-542,19
+529,8
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
int termlist_only = 1;
data1_termlist *tl;
int xpdone = 0;
int termlist_only = 1;
data1_termlist *tl;
int xpdone = 0;
-#if NATTR
-#else
- int xpath_is_start = 0;
- if (use == 1)
- xpath_is_start = 1;
-#endif
-
-#if NATTR
yaz_log(YLOG_DEBUG, "index_xpath level=%d xpath_index=%s",
level, xpath_index);
yaz_log(YLOG_DEBUG, "index_xpath level=%d xpath_index=%s",
level, xpath_index);
-#else
- yaz_log(YLOG_DEBUG, "index_xpath level=%d use=%d", level, use);
-#endif
if ((!n->root->u.root.absyn) ||
(n->root->u.root.absyn->enable_xpath_indexing)) {
termlist_only = 0;
if ((!n->root->u.root.absyn) ||
(n->root->u.root.absyn->enable_xpath_indexing)) {
termlist_only = 0;
@@
-581,19
+557,10
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
memcpy (&wrd_tl, wrd, sizeof(*wrd));
if (tl->source)
sp_parse(sp, n, &wrd_tl, tl->source);
memcpy (&wrd_tl, wrd, sizeof(*wrd));
if (tl->source)
sp_parse(sp, n, &wrd_tl, tl->source);
-#if NATTR
if (!tl->index_name)
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
{
/* this is the ! case, so structure is for the xpath index */
{
/* this is the ! case, so structure is for the xpath index */
-#if NATTR
wrd_tl.index_name = xpath_index;
wrd_tl.index_name = xpath_index;
-#else
- wrd_tl.attrSet = VAL_IDXPATH;
- wrd_tl.attrUse = use;
-#endif
if (p->flagShowRecords)
{
int i;
if (p->flagShowRecords)
{
int i;
@@
-611,25
+578,13
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
xpdone = 1;
} else {
/* this is just the old fashioned attribute based index */
xpdone = 1;
} else {
/* this is just the old fashioned attribute based index */
-#if NATTR
wrd_tl.index_name = tl->index_name;
wrd_tl.index_name = tl->index_name;
-#else
- wrd_tl.attrSet = (int) (tl->att->parent->reference);
- wrd_tl.attrUse = tl->att->locals->local;
-#endif
if (p->flagShowRecords)
{
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tl->structure);
if (p->flagShowRecords)
{
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tl->structure);
-#if NATTR
printf("%s %s", tl->index_name, tl->source);
printf("%s %s", tl->index_name, tl->source);
-#else
- printf("%s:%s [%d] %s",
- tl->att->parent->name,
- tl->att->name, tl->att->value,
- tl->source);
-#endif
printf (" XData:\"");
for (i = 0; i<wrd_tl.term_len && i < 40; i++)
fputc (wrd_tl.term_buf[i], stdout);
printf (" XData:\"");
for (i = 0; i<wrd_tl.term_len && i < 40; i++)
fputc (wrd_tl.term_buf[i], stdout);
@@
-647,12
+602,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
or no ! in the termlist, and default indexing is enabled... */
if (!p->flagShowRecords && !xpdone && !termlist_only)
{
or no ! in the termlist, and default indexing is enabled... */
if (!p->flagShowRecords && !xpdone && !termlist_only)
{
-#if NATTR
wrd->index_name = xpath_index;
wrd->index_name = xpath_index;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = use;
-#endif
wrd->index_type = 'w';
(*p->tokenAdd)(wrd);
}
wrd->index_type = 'w';
(*p->tokenAdd)(wrd);
}
@@
-663,12
+613,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
wrd->index_type = '0';
wrd->term_buf = tag_path_full;
wrd->term_len = strlen(tag_path_full);
wrd->index_type = '0';
wrd->term_buf = tag_path_full;
wrd->term_len = strlen(tag_path_full);
-#if NATTR
wrd->index_name = xpath_index;
wrd->index_name = xpath_index;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = use;
-#endif
if (p->flagShowRecords)
{
printf("%*s tag=", (level + 1) * 4, "");
if (p->flagShowRecords)
{
printf("%*s tag=", (level + 1) * 4, "");
@@
-694,11
+639,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
{
for (; tl; tl = tl->next)
{
{
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
do_xpindex = 1;
}
}
do_xpindex = 1;
}
}
@@
-738,13
+679,8
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
{
for (; tl; tl = tl->next)
{
{
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
do_xpindex = 1;
if (!tl->index_name)
do_xpindex = 1;
-#else
- if (!tl->att)
- do_xpindex = 1;
-#endif
}
}
}
}
@@
-752,11
+688,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
/* attribute (no value) */
wrd->index_type = '0';
/* attribute (no value) */
wrd->index_type = '0';
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 3;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_NAME;
wrd->term_buf = xp->name;
wrd->term_len = strlen(xp->name);
wrd->term_buf = xp->name;
wrd->term_len = strlen(xp->name);
@@
-771,11
+703,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
strcat (comb, "=");
strcat (comb, xp->value);
strcat (comb, "=");
strcat (comb, xp->value);
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 3;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_NAME;
wrd->index_type = '0';
wrd->term_buf = comb;
wrd->term_len = strlen(comb);
wrd->index_type = '0';
wrd->term_buf = comb;
wrd->term_len = strlen(comb);
@@
-801,11
+729,7
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
/* If there is a termlist given (=xelm directive) */
for (; tl; tl = tl->next)
{
/* If there is a termlist given (=xelm directive) */
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
{
/* add xpath index for the attribute */
index_xpath_attr (attr_tag_path_full, xp->name,
{
/* add xpath index for the attribute */
index_xpath_attr (attr_tag_path_full, xp->name,
@@
-813,17
+737,10
@@
static void index_xpath(struct source_parser *sp, data1_node *n,
p, wrd);
xpdone = 1;
} else {
p, wrd);
xpdone = 1;
} else {
- /* if this fragment is enabled, we index
- attribute values as well. See bug #460 */
- if (0 && xp->value)
+ /* index attribute value (only path/@attr) */
+ if (xp->value)
{
{
-#if NATTR
wrd->index_name = tl->index_name;
wrd->index_name = tl->index_name;
-#else
- wrd->attrSet = (int)
- (tl->att->parent->reference);
- wrd->attrUse = tl->att->locals->local;
-#endif
wrd->index_type = *tl->structure;
wrd->term_buf = xp->value;
wrd->term_len = strlen(xp->value);
wrd->index_type = *tl->structure;
wrd->term_buf = xp->value;
wrd->term_len = strlen(xp->value);
@@
-882,14
+799,7
@@
static void index_termlist (struct source_parser *sp, data1_node *par,
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tlist->structure);
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tlist->structure);
-#if NATTR
printf("%s %s", tlist->index_name, tlist->source);
printf("%s %s", tlist->index_name, tlist->source);
-#else
- printf("%s:%s [%d] %s",
- tlist->att->parent->name,
- tlist->att->name, tlist->att->value,
- tlist->source);
-#endif
printf (" XData:\"");
for (i = 0; i<wrd->term_len && i < 40; i++)
fputc (wrd->term_buf[i], stdout);
printf (" XData:\"");
for (i = 0; i<wrd->term_len && i < 40; i++)
fputc (wrd->term_buf[i], stdout);
@@
-901,12
+811,7
@@
static void index_termlist (struct source_parser *sp, data1_node *par,
else
{
wrd->index_type = *tlist->structure;
else
{
wrd->index_type = *tlist->structure;
-#if NATTR
wrd->index_name = tlist->index_name;
wrd->index_name = tlist->index_name;
-#else
- wrd->attrSet = (int) (tlist->att->parent->reference);
- wrd->attrUse = tlist->att->locals->local;
-#endif
(*p->tokenAdd)(wrd);
}
}
(*p->tokenAdd)(wrd);
}
}
@@
-960,14
+865,9
@@
static int dumpkeys_r(struct source_parser *sp,
{
index_termlist(sp, n, n, p, level, wrd);
/* index start tag */
{
index_termlist(sp, n, n, p, level, wrd);
/* index start tag */
-#if NATTR
if (n->root->u.root.absyn)
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_BEGIN,
1 /* is start */);
if (n->root->u.root.absyn)
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_BEGIN,
1 /* is start */);
-#else
- if (n->root->u.root.absyn)
- index_xpath(sp, n, p, level, wrd, 1);
-#endif
}
if (n->child)
}
if (n->child)
@@
-995,23
+895,15
@@
static int dumpkeys_r(struct source_parser *sp,
if (par)
index_termlist(sp, par, n, p, level, wrd);
if (par)
index_termlist(sp, par, n, p, level, wrd);
-#if NATTR
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_CDATA,
0 /* is start */);
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_CDATA,
0 /* is start */);
-#else
- index_xpath(sp, n, p, level, wrd, 1016);
-#endif
}
if (n->which == DATA1N_tag)
{
/* index end tag */
}
if (n->which == DATA1N_tag)
{
/* index end tag */
-#if NATTR
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_END,
0 /* is start */);
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_END,
0 /* is start */);
-#else
- index_xpath(sp, n, p, level, wrd, 2);
-#endif
}
if (p->flagShowRecords && n->which == DATA1N_root)
}
if (p->flagShowRecords && n->which == DATA1N_root)
@@
-1550,3
+1442,11
@@
int zebra_grs_retrieve(void *clientData, struct recRetrieveCtrl *p,
return 0;
}
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+