X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Frecgrs.c;h=fecf2c5406d6e26faf7145ef61b62ab6b88ebe26;hb=b88909df16157ed1e7859bc3fad6b01520d4865e;hp=5cf015b1a7a6450a1421413e90cd900ac804cf52;hpb=852c2d471176b3f597b6b2a328a3c6eba0965ad3;p=idzebra-moved-to-github.git diff --git a/recctrl/recgrs.c b/recctrl/recgrs.c index 5cf015b..fecf2c5 100644 --- a/recctrl/recgrs.c +++ b/recctrl/recgrs.c @@ -1,5 +1,5 @@ -/* $Id: recgrs.c,v 1.105 2005-08-22 08:19:51 adam Exp $ - Copyright (C) 1995-2005 +/* $Id: recgrs.c,v 1.111 2006-06-13 12:02:15 adam Exp $ + Copyright (C) 1995-2006 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++) + { 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 (!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; } } + } 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) { -#if NATTR 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) { -#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); } -#if NATTR 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); @@ -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, -#if NATTR char *xpath_index, int xpath_is_start -#else - int use -#endif ) { int i; @@ -542,21 +529,8 @@ static void index_xpath(struct source_parser *sp, data1_node *n, 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); -#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)) { + (n->root->u.root.absyn->xpath_indexing == DATA1_XPATH_INDEXING_ENABLE)) { termlist_only = 0; } @@ -581,19 +555,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); -#if NATTR if (!tl->index_name) -#else - if (!tl->att) -#endif { /* this is the ! case, so structure is for the xpath index */ -#if NATTR wrd_tl.index_name = xpath_index; -#else - wrd_tl.attrSet = VAL_IDXPATH; - wrd_tl.attrUse = use; -#endif if (p->flagShowRecords) { int i; @@ -611,25 +576,13 @@ static void index_xpath(struct source_parser *sp, data1_node *n, xpdone = 1; } else { /* this is just the old fashioned attribute based index */ -#if NATTR 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 NATTR 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; iflagShowRecords && !xpdone && !termlist_only) { -#if NATTR wrd->index_name = xpath_index; -#else - wrd->attrSet = VAL_IDXPATH; - wrd->attrUse = use; -#endif wrd->index_type = 'w'; (*p->tokenAdd)(wrd); } @@ -663,12 +611,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); -#if NATTR wrd->index_name = xpath_index; -#else - wrd->attrSet = VAL_IDXPATH; - wrd->attrUse = use; -#endif if (p->flagShowRecords) { printf("%*s tag=", (level + 1) * 4, ""); @@ -694,11 +637,7 @@ static void index_xpath(struct source_parser *sp, data1_node *n, { for (; tl; tl = tl->next) { -#if NATTR if (!tl->index_name) -#else - if (!tl->att) -#endif do_xpindex = 1; } } @@ -738,13 +677,8 @@ static void index_xpath(struct source_parser *sp, data1_node *n, { for (; tl; tl = tl->next) { -#if NATTR if (!tl->index_name) do_xpindex = 1; -#else - if (!tl->att) - do_xpindex = 1; -#endif } } @@ -752,11 +686,7 @@ static void index_xpath(struct source_parser *sp, data1_node *n, /* 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); @@ -771,11 +701,7 @@ static void index_xpath(struct source_parser *sp, data1_node *n, 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); @@ -801,11 +727,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 NATTR if (!tl->index_name) -#else - if (!tl->att) -#endif { /* add xpath index for the attribute */ index_xpath_attr (attr_tag_path_full, xp->name, @@ -813,16 +735,10 @@ static void index_xpath(struct source_parser *sp, data1_node *n, p, wrd); xpdone = 1; } else { - /* add attribute based index for the attribute */ + /* index attribute value (only path/@attr) */ if (xp->value) { -#if NATTR 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); @@ -881,14 +797,7 @@ static void index_termlist (struct source_parser *sp, data1_node *par, int i; printf("%*sIdx: [%s]", (level + 1) * 4, "", tlist->structure); -#if NATTR 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; iterm_len && i < 40; i++) fputc (wrd->term_buf[i], stdout); @@ -900,12 +809,7 @@ static void index_termlist (struct source_parser *sp, data1_node *par, else { wrd->index_type = *tlist->structure; -#if NATTR wrd->index_name = tlist->index_name; -#else - wrd->attrSet = (int) (tlist->att->parent->reference); - wrd->attrUse = tlist->att->locals->local; -#endif (*p->tokenAdd)(wrd); } } @@ -959,14 +863,9 @@ static int dumpkeys_r(struct source_parser *sp, { 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 */); -#else - if (n->root->u.root.absyn) - index_xpath(sp, n, p, level, wrd, 1); -#endif } if (n->child) @@ -994,23 +893,15 @@ static int dumpkeys_r(struct source_parser *sp, 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 */); -#else - index_xpath(sp, n, p, level, wrd, 1016); -#endif } if (n->which == DATA1N_tag) { /* index end tag */ -#if NATTR 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) @@ -1549,3 +1440,11 @@ int zebra_grs_retrieve(void *clientData, struct recRetrieveCtrl *p, return 0; } +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +