X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=0e615e7c4e7a4136e49042e3a98d2b9be96b6176;hp=223927947a1505131142cba03a71db97331969c8;hb=f69d4aa4609ff3daa71733da1ea0fcd8322ab954;hpb=f4be2b662141a53c7b9a8a9b410b549dfd2bc1fb diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index 2239279..0e615e7 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,19 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.21 1998-02-27 14:08:05 adam + * Revision 1.24 1998-10-28 15:10:09 adam + * Added --with-yc option to configure. For the data1_node in data1.h: + * decreased size of localdata and removed member "line" which wasn't useful. + * + * 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 +197,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); @@ -193,7 +205,6 @@ data1_node *data1_add_insert_taggeddata(data1_handle dh, data1_node *root, data1_node *datn; tagn->which = DATA1N_tag; - tagn->line = -1; tagn->u.tag.tag = data1_insert_string (dh, tagn, m, tagname); tagn->u.tag.node_selected = 0; tagn->u.tag.make_variantlist = 0; @@ -204,7 +215,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 +250,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 +263,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 +449,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;