X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=e164202c8e83300deab789089a9e9378cba926a9;hp=c951c97dc68aa6b4bf05a6f0579e438b363bd4f3;hb=9446211daf0869d342b5738d153d810230b7a299;hpb=cea212fba995de3fa0d6d6723d828f6fd7ca31df diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index c951c97..e164202 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,23 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.1 1995-11-01 11:56:09 quinn + * Revision 1.6 1995-12-12 16:37:08 quinn + * Added destroy element to data1_node. + * + * Revision 1.5 1995/12/11 15:22:37 quinn + * Added last_child field to the node. + * Rewrote schema-mapping. + * + * Revision 1.4 1995/11/13 09:27:36 quinn + * Fiddling with the variant stuff. + * + * Revision 1.3 1995/11/01 16:34:57 quinn + * Making data1 look for tables in data1_tabpath + * + * Revision 1.2 1995/11/01 13:54:48 quinn + * Minor adjustments + * + * Revision 1.1 1995/11/01 11:56:09 quinn * Added Retrieval (data management) functions en masse. * * Revision 1.14 1995/10/30 12:40:55 quinn @@ -58,7 +74,12 @@ #include #include -#include "data1.h" +#include + +char *data1_tabpath = 0; /* global path for tables */ + +void data1_set_tabpath(char *p) +{ data1_tabpath = p; } static data1_node *freelist = 0; @@ -83,8 +104,9 @@ data1_node *data1_mk_node(void) else if (!(r = xmalloc(sizeof(*r)))) abort(); - r->next = r->child = r->parent = 0; + r->next = r->child = r->last_child = r->parent = 0; r->num_children = 0; + r->destroy = 0; return r; } @@ -104,6 +126,8 @@ void data1_free_tree(data1_node *t) data1_free_tree(p); p = pn; } + if (t->destroy) + (*t->destroy)(t); fr_node(t); } @@ -122,6 +146,8 @@ data1_node *data1_insert_taggeddata(data1_node *root, data1_node *at, tagn->line = -1; tagn->u.tag.tag = 0; tagn->u.tag.node_selected = 0; + tagn->u.tag.make_variantlist = 0; + tagn->u.tag.no_data_requested = 0; if (!(tagn->u.tag.element = data1_getelementbytagname(root->u.root.absyn, 0, tagname))) { @@ -280,7 +306,7 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, *buf = t + 1; } } - else /* acquire our element in the abstract syntax */ + else /* tag.. acquire our element in the abstract syntax */ { data1_node *partag = get_parent_tag(parent); data1_element *e = 0; @@ -312,6 +338,8 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, res->u.tag.element = elem; res->u.tag.tag = tag; res->u.tag.node_selected = 0; + res->u.tag.make_variantlist = 0; + res->u.tag.no_data_requested = 0; res->root = parent->root; *buf = t + 1; } @@ -325,6 +353,7 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, */ while ((*pp = data1_read_node(buf, res, line, absyn))) { + res->last_child = *pp; res->num_children++; pp = &(*pp)->next; } @@ -414,7 +443,7 @@ data1_node *data1_read_record(int (*rf)(int, char *, size_t), int fd) abort(); for (;;) { - if (rd + 4096 > size && !(buf = realloc(buf, size *= 2))) + if (rd + 4096 > size && !(buf =xrealloc(buf, size *= 2))) abort(); if ((res = (*rf)(fd, buf + rd, 4096)) <= 0) {