X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=bb9e879978c0e25995f95c126818718899a4b2aa;hb=4b867394d5d5dda2be8427c96e0fb0fd07eddbdc;hp=223927947a1505131142cba03a71db97331969c8;hpb=f4be2b662141a53c7b9a8a9b410b549dfd2bc1fb;p=yaz-moved-to-github.git diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index 2239279..bb9e879 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,15 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.21 1998-02-27 14:08:05 adam + * Revision 1.23 1998-03-12 11:28:45 adam + * Fix: didn't set root member of tagged node in function. + * data1_add_insert_taggeddata. + * + * Revision 1.22 1998/03/05 08:15:32 adam + * Implemented data1_add_insert_taggeddata utility which is more flexible + * than data1_insert_taggeddata. + * + * Revision 1.21 1998/02/27 14:08:05 adam * Added const to some char pointer arguments. * Reworked data1_read_node so that it doesn't create a tree with * pointers to original "SGML"-buffer. @@ -185,7 +193,7 @@ char *data1_insert_string (data1_handle dh, data1_node *res, data1_node *data1_add_insert_taggeddata(data1_handle dh, data1_node *root, data1_node *at, const char *tagname, NMEM m, - int first_flag) + int first_flag, int local_allowed) { data1_node *partag = get_parent_tag (dh, at); data1_node *tagn = data1_mk_node (dh, m); @@ -204,7 +212,10 @@ data1_node *data1_add_insert_taggeddata(data1_handle dh, data1_node *root, e = partag->u.tag.element; tagn->u.tag.element = data1_getelementbytagname (dh, root->u.root.absyn, e, tagname); + if (!local_allowed && !tagn->u.tag.element) + return NULL; tagn->last_child = tagn->child = datn = data1_mk_node (dh, m); + tagn->root = root; datn->parent = tagn; datn->root = root; datn->which = DATA1N_data; @@ -236,7 +247,7 @@ data1_node *data1_add_taggeddata(data1_handle dh, data1_node *root, data1_node *at, const char *tagname, NMEM m) { - return data1_add_insert_taggeddata (dh, root, at, tagname, m, 0); + return data1_add_insert_taggeddata (dh, root, at, tagname, m, 0, 1); } @@ -249,7 +260,7 @@ data1_node *data1_insert_taggeddata(data1_handle dh, data1_node *root, data1_node *at, const char *tagname, NMEM m) { - return data1_add_insert_taggeddata (dh, root, at, tagname, m, 1); + return data1_add_insert_taggeddata (dh, root, at, tagname, m, 1, 0); } /* @@ -435,7 +446,7 @@ data1_node *data1_read_node (data1_handle dh, const char **buf, /* use local buffer of nmem if too large */ if (len >= DATA1_LOCALDATA) - res->u.data.data = nmem_malloc (m, len); + res->u.data.data = (char*) nmem_malloc (m, len); else res->u.data.data = res->lbuf;