X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=retrieval%2Fd1_doespec.c;h=1f115b5524bc059a4c4d74dfd5982024c29b41dd;hb=03cb3a09ea39f9852123c7ef5ee6357950b0d2b8;hp=31f357f8c78d3d43c22f1fa98ead0d75a4c3d9ab;hpb=bc33b8b53697bcc10a02f7e7456fd75b2c3473ef;p=yaz-moved-to-github.git diff --git a/retrieval/d1_doespec.c b/retrieval/d1_doespec.c index 31f357f..1f115b5 100644 --- a/retrieval/d1_doespec.c +++ b/retrieval/d1_doespec.c @@ -4,7 +4,22 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_doespec.c,v $ - * Revision 1.5 1996-07-06 19:58:34 quinn + * Revision 1.10 1997-10-02 12:10:24 quinn + * Attempt to fix bug in especs + * + * Revision 1.9 1997/09/17 12:10:35 adam + * YAZ version 1.4. + * + * Revision 1.8 1997/05/14 06:54:02 adam + * C++ support. + * + * Revision 1.7 1997/04/30 08:52:11 quinn + * Null + * + * Revision 1.6 1996/10/11 11:57:22 quinn + * Smallish + * + * Revision 1.5 1996/07/06 19:58:34 quinn * System headerfiles gathered in yconfig * * Revision 1.4 1996/06/07 11:04:32 quinn @@ -42,7 +57,7 @@ static int match_children_wildpath(data1_node *n, Z_Espec1 *e, int i, * triple with an unknown set. */ static Z_Triple *find_triple(Z_Variant *var, oid_value universalset, - oid_value set, int class, int type) + oid_value set, int zclass, int type) { int i; oident *defaultsetent = oid_getentbyoid(var->globalVariantSetId); @@ -56,7 +71,7 @@ static Z_Triple *find_triple(Z_Variant *var, oid_value universalset, oid_value curset = cursetent ? cursetent->value : defaultset; if (set == curset && - *var->triples[i]->class == class && + *var->triples[i]->zclass == zclass && *var->triples[i]->type == type) return var->triples[i]; } @@ -68,7 +83,17 @@ static void mark_subtree(data1_node *n, int make_variantlist, int no_data, { data1_node *c; +#if 1 + if (n->which == DATA1N_tag) +#else if (n->which == DATA1N_tag && (!n->child || n->child->which != DATA1N_tag)) + /* + * This seems to cause multi-level elements to fall out when only a + * top-level elementRequest has been given... Problem is, I can't figure + * out what it was supposed to ACHIEVE.... delete when code has been + * verified. + */ +#endif { n->u.tag.node_selected = 1; n->u.tag.make_variantlist = make_variantlist; @@ -196,8 +221,9 @@ static int match_children_here(data1_node *n, Z_Espec1 *e, int i, * have we looked at enough children? */ if (!occur || (occur->which == Z_Occurrences_values && + (!occur->u.values->howMany || counter - *occur->u.values->start >= - *occur->u.values->howMany - 1)) + *occur->u.values->howMany - 1))) return hits; } } @@ -225,7 +251,7 @@ static int match_children(data1_node *n, Z_Espec1 *e, int i, Z_ETagUnit **t, return res; } -int data1_doespec1(data1_node *n, Z_Espec1 *e) +int data1_doespec1 (data1_handle dh, data1_node *n, Z_Espec1 *e) { int i;