* 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.
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);
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;
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);
}
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);
}
/*
/* 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;