Added --with-yc option to configure. For the data1_node in data1.h:
[yaz-moved-to-github.git] / retrieval / d1_read.c
index 2239279..0e615e7 100644 (file)
@@ -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;