* Sebastian Hammer, Adam Dickmeiss
*
* $Log: d1_doespec.c,v $
- * Revision 1.3 1995-11-13 09:27:33 quinn
+ * 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
+ * Fixed tag->tagset dependency
+ *
+ * Revision 1.3 1995/11/13 09:27:33 quinn
* Fiddling with the variant stuff.
*
* Revision 1.2 1995/11/01 13:54:45 quinn
}
static void mark_subtree(data1_node *n, int make_variantlist, int no_data,
- Z_Variant *vreq)
+ int get_bytes, Z_Variant *vreq)
{
data1_node *c;
n->u.tag.node_selected = 1;
n->u.tag.make_variantlist = make_variantlist;
n->u.tag.no_data_requested = no_data;
+ n->u.tag.get_bytes = get_bytes;
}
for (c = n->child; c; c = c->next)
c->u.tag.node_selected = 1;
c->u.tag.make_variantlist = make_variantlist;
c->u.tag.no_data_requested = no_data;
+ c->u.tag.get_bytes = get_bytes;
}
- mark_subtree(c, make_variantlist, no_data, vreq);
+ mark_subtree(c, make_variantlist, no_data, get_bytes, vreq);
}
}
occur = want->occurrences;
if (c->u.tag.element)
tag = c->u.tag.element->tag;
- if (*want->tagType != (tag ? tag->tagset->type : 3))
+ if (*want->tagType != ((tag && tag->tagset) ? tag->tagset->type :
+ 3))
continue;
if (want->tagValue->which == Z_StringOrNumeric_numeric)
{
{
int show_variantlist = 0;
int no_data = 0;
+ int get_bytes = -1;
+
Z_Variant *vreq =
e->elements[i]->u.simpleElement->variantRequest;
oident *defset = oid_getentbyoid(e->defaultVariantSetId);
if (vreq)
{
+ Z_Triple *r;
+
/*
* 6,5: meta-data requested, variant list.
*/
*/
if (find_triple(vreq, defsetval, var1, 9, 1))
no_data = 1;
+
+ /* howmuch */
+ if ((r = find_triple(vreq, defsetval, var1, 5, 5)))
+ if (r->which == Z_Triple_integer)
+ get_bytes = *r->value.integer;
}
- mark_subtree(c, show_variantlist, no_data, vreq);
+ mark_subtree(c, show_variantlist, no_data, get_bytes, vreq);
}
hits++;
/*
* 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;
}
}