Work on Summary.
[yaz-moved-to-github.git] / retrieval / d1_absyn.c
index a708df6..453e9f1 100644 (file)
@@ -4,7 +4,13 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: d1_absyn.c,v $
- * Revision 1.5  1996-05-09 07:27:43  quinn
+ * Revision 1.7  1996-06-10 08:56:01  quinn
+ * Work on Summary.
+ *
+ * Revision 1.6  1996/05/31  13:52:21  quinn
+ * Fixed uninitialized variable for local tags in abstract syntax.
+ *
+ * Revision 1.5  1996/05/09  07:27:43  quinn
  * Multiple local attributes values supported.
  *
  * Revision 1.4  1996/05/01  12:45:28  quinn
@@ -113,7 +119,7 @@ data1_absyn *data1_read_absyn(char *file)
     char line[512], *r, cmd[512], args[512];
     data1_absyn *res = 0;
     FILE *f;
-    data1_element **ppl[D1_MAX_NESTING];
+    data1_element **ppl[D1_MAX_NESTING], *cur[D1_MAX_NESTING];
     data1_esetname **esetpp;
     data1_maptab **maptabp;
     data1_marctab **marcp;
@@ -139,6 +145,7 @@ data1_absyn *data1_read_absyn(char *file)
     marcp = &res->marc;
     res->elements = 0;
     ppl[0] = &res->elements;
+    cur[0] = 0;
     esetpp = &res->esetnames;
 
     for (;;)
@@ -184,16 +191,17 @@ data1_absyn *data1_read_absyn(char *file)
            }
            if (i > level + 1)
            {
-               logf(LOG_WARN, "Bad level inc in %s in '%'", file, args);
+               logf(LOG_WARN, "Bad level inc in %s in '%s'", file, args);
                fclose(f);
                return 0;
            }
            level = i;
-           if (!(new = *ppl[level] = xmalloc(sizeof(*new))))
+           if (!(new = cur[level] = *ppl[level] = xmalloc(sizeof(*new))))
                abort;
            new->next = new->children = 0;
            new->tag = 0;
            new->termlists = 0;
+           new->parent = level ? cur[level - 1] : 0;
            tp = &new->termlists;
            ppl[level] = &new->next;
            ppl[level+1] = &new->children;
@@ -225,6 +233,8 @@ data1_absyn *data1_read_absyn(char *file)
                nt->names->name = nt->value.string;
                nt->names->next = 0;
                nt->kind = DATA1K_string;
+               nt->next = 0;
+               nt->tagset = 0;
            }
            else
            {