more data1 cleanup
[idzebra-moved-to-github.git] / recctrl / recgrs.c
index deb7046..d7af403 100644 (file)
@@ -3,7 +3,13 @@
  * All rights reserved.
  *
  * $Log: recgrs.c,v $
- * Revision 1.45  2002-04-12 14:40:42  adam
+ * Revision 1.47  2002-05-03 13:50:25  adam
+ * data1 cleanup
+ *
+ * Revision 1.46  2002/04/13 18:16:43  adam
+ * More XPATH work; common sequence numbers for extract keys
+ *
+ * Revision 1.45  2002/04/12 14:40:42  adam
  * Work on XPATH
  *
  * Revision 1.44  2002/04/11 20:09:47  adam
@@ -477,10 +483,9 @@ static void index_termlist (data1_node *par, data1_node *n,
     }
 }
 
-static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level)
+static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level,
+                    RecWord *wrd)
 {
-    RecWord wrd;
-    (*p->init)(p, &wrd);      /* set defaults */
     for (; n; n = n->next)
     {
        if (p->flagShowRecords) /* display element description to user */
@@ -522,14 +527,14 @@ static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level)
 
        if (n->which == DATA1N_tag)
        {
-            index_termlist (n, n, p, level, &wrd);
+            index_termlist (n, n, p, level, wrd);
             /* index start tag */
             if (!n->root->u.root.absyn)
-                index_xpath (n, p, level, &wrd, 1);
+                index_xpath (n, p, level, wrd, 1);
        }
 
        if (n->child)
-           if (dumpkeys(n->child, p, level + 1) < 0)
+           if (dumpkeys(n->child, p, level + 1, wrd) < 0)
                return -1;
 
 
@@ -551,9 +556,9 @@ static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level)
            }
 
            if (par)
-               index_termlist (par, n, p, level, &wrd);
+               index_termlist (par, n, p, level, wrd);
             if (!n->root->u.root.absyn)
-                index_xpath (n, p, level, &wrd, 1016);
+                index_xpath (n, p, level, wrd, 1016);
 
        }
 
@@ -561,7 +566,7 @@ static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level)
        {
             /* index end tag */
             if (!n->root->u.root.absyn)
-                index_xpath (n, p, level, &wrd, 2);
+                index_xpath (n, p, level, wrd, 2);
        }
 
 
@@ -577,6 +582,7 @@ int grs_extract_tree(struct recExtractCtrl *p, data1_node *n)
 {
     oident oe;
     int oidtmp[OID_SIZE];
+    RecWord wrd;
 
     oe.proto = PROTO_Z3950;
     oe.oclass = CLASS_SCHEMA;
@@ -587,7 +593,8 @@ int grs_extract_tree(struct recExtractCtrl *p, data1_node *n)
         if ((oid_ent_to_oid (&oe, oidtmp)))
             (*p->schemaAdd)(p, oidtmp);
     }
-    return dumpkeys(n, p, 0);
+    (*p->init)(p, &wrd);
+    return dumpkeys(n, p, 0, &wrd);
 }
 
 static int grs_extract_sub(struct grs_handlers *h, struct recExtractCtrl *p,
@@ -597,6 +604,7 @@ static int grs_extract_sub(struct grs_handlers *h, struct recExtractCtrl *p,
     struct grs_read_info gri;
     oident oe;
     int oidtmp[OID_SIZE];
+    RecWord wrd;
 
     gri.readf = p->readf;
     gri.seekf = p->seekf;
@@ -626,7 +634,8 @@ static int grs_extract_sub(struct grs_handlers *h, struct recExtractCtrl *p,
 #if 0
     data1_pr_tree (p->dh, n, stdout);
 #endif
-    if (dumpkeys(n, p, 0) < 0)
+    (*p->init)(p, &wrd);
+    if (dumpkeys(n, p, 0, &wrd) < 0)
     {
        data1_free_tree(p->dh, n);
        return RECCTRL_EXTRACT_ERROR;
@@ -760,8 +769,7 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
     data1_pr_tree (p->dh, node, stdout);
 #endif
     logf (LOG_DEBUG, "grs_retrieve: size");
-    if ((dnew = data1_insert_taggeddata(p->dh, node, node,
-                                      "size", mem)))
+    if ((dnew = data1_mk_tag_data_wd(p->dh, node, node,"size", mem)))
     {
        dnew->u.data.what = DATA1I_text;
        dnew->u.data.data = dnew->lbuf;
@@ -771,7 +779,7 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
 
     tagname = res_get_def(p->res, "tagrank", "rank");
     if (strcmp(tagname, "0") && p->score >= 0 &&
-       (dnew = data1_insert_taggeddata(p->dh, node, node, tagname, mem)))
+       (dnew = data1_mk_tag_data_wd(p->dh, node, node, tagname, mem)))
     {
         logf (LOG_DEBUG, "grs_retrieve: %s", tagname);
        dnew->u.data.what = DATA1I_num;
@@ -782,7 +790,7 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
 
     tagname = res_get_def(p->res, "tagsysno", "localControlNumber");
     if (strcmp(tagname, "0") && p->localno > 0 &&
-        (dnew = data1_insert_taggeddata(p->dh, node, node, tagname, mem)))
+        (dnew = data1_mk_tag_data_wd(p->dh, node, node, tagname, mem)))
     {
         logf (LOG_DEBUG, "grs_retrieve: %s", tagname);
        dnew->u.data.what = DATA1I_text;
@@ -791,6 +799,8 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
        dnew->u.data.len = strlen(dnew->u.data.data);
     }
 
+    data1_pr_tree (p->dh, node, stdout);
+
     if (p->comp && p->comp->which == Z_RecordComp_complex &&
        p->comp->u.complex->generic &&
        p->comp->u.complex->generic->schema)
@@ -878,8 +888,8 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
            }
            *(p++) = '\0';
                
-           if ((dnew = data1_insert_taggeddata(dh, node, node,
-                                               "schemaIdentifier", mem)))
+           if ((dnew = data1_mk_tag_data_wd(dh, node, node,
+                                             "schemaIdentifier", mem)))
            {
                dnew->u.data.what = DATA1I_oid;
                dnew->u.data.data = (char *) nmem_malloc(mem, p - tmp);