Removed global data1_tabpath - uses data1_get_tabpath() instead.
[yaz-moved-to-github.git] / retrieval / d1_read.c
index 35eff2c..d4a14bd 100644 (file)
@@ -4,7 +4,16 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: d1_read.c,v $
- * Revision 1.12  1996-10-11 10:35:38  adam
+ * Revision 1.15  1997-09-05 09:50:57  adam
+ * Removed global data1_tabpath - uses data1_get_tabpath() instead.
+ *
+ * Revision 1.14  1997/05/14 06:54:04  adam
+ * C++ support.
+ *
+ * Revision 1.13  1996/10/29 13:35:38  adam
+ * Implemented data1_set_tabpath and data1_get_tabpath.
+ *
+ * Revision 1.12  1996/10/11 10:35:38  adam
  * Fixed a bug that caused data1_read_node to core dump when no abstract
  * syntax was defined in a "sgml"-record.
  *
 #include <log.h>
 #include <data1.h>
 
-char *data1_tabpath = 0; /* global path for tables */
+static char *data1_tabpath = 0; /* global path for tables */
+
+void data1_set_tabpath(const char *p)
+{
+    if (data1_tabpath)
+    {
+        xfree (data1_tabpath);
+        data1_tabpath = NULL;
+    }
+    if (p)
+    {
+        data1_tabpath = xmalloc (strlen(p)+1);
+        strcpy (data1_tabpath, p);
+    }
+}
 
-void data1_set_tabpath(char *p)
-{ data1_tabpath = p; }
+const char *data1_get_tabpath (void)
+{
+    return data1_tabpath;
+}
 
-#if 0
-static data1_node *freelist = 0;
-#endif
 
 /*
  * get the tag which is the immediate parent of this node (this may mean
@@ -120,29 +142,13 @@ data1_node *data1_mk_node(NMEM m)
 {
     data1_node *r;
 
-#if 0
-    if ((r = freelist))
-       freelist = r->next;
-    else
-       if (!(r = xmalloc(sizeof(*r))))
-           abort();
-#else
     r = nmem_malloc(m, sizeof(*r));
-#endif
     r->next = r->child = r->last_child = r->parent = 0;
     r->num_children = 0;
     r->destroy = 0;
     return r;
 }
 
-#if 0
-static void fr_node(data1_node *n)
-{
-    n->next = freelist;
-    freelist = n;
-}
-#endif
-
 void data1_free_tree(data1_node *t)
 {
     data1_node *p = t->child, *pn;
@@ -155,9 +161,6 @@ void data1_free_tree(data1_node *t)
     }
     if (t->destroy)
        (*t->destroy)(t);
-#if 0
-    fr_node(t);
-#endif
 }
 
 /*
@@ -283,18 +286,18 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line,
        }
        else if (!strncmp(tag, "var", 3))
        {
-           char class[DATA1_MAX_SYMBOL], type[DATA1_MAX_SYMBOL];
+           char tclass[DATA1_MAX_SYMBOL], type[DATA1_MAX_SYMBOL];
            data1_vartype *tp;
            int val_offset;
            data1_node *p;
 
-           if (sscanf(args, "%s %s %n", class, type, &val_offset) != 2)
+           if (sscanf(args, "%s %s %n", tclass, type, &val_offset) != 2)
            {
                logf(LOG_WARN, "Malformed variant triple at '%s'", tag);
                return 0;
            }
            if (!(tp = data1_getvartypebyct(parent->root->u.root.absyn->varset,
-               class, type)))
+               tclass, type)))
                return 0;
            
            /*
@@ -391,9 +394,6 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line,
     {
        int len = 0;
        char *data = *buf, *pp = *buf;
-#if 0
-       data1_node *partag = get_parent_tag(parent);
-#endif
 
         if (!parent)      /* abort if abstract syntax is undefined */
             return 0;