Added body-of-text to BIB-1 ANY and the WAIS profile
[yaz-moved-to-github.git] / retrieval / d1_grs.c
index 7c863b0..f990323 100644 (file)
@@ -4,7 +4,13 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: d1_grs.c,v $
- * Revision 1.3  1995-11-13 09:27:35  quinn
+ * Revision 1.5  1996-06-03 09:46:42  quinn
+ * Added OID data type.
+ *
+ * Revision 1.4  1996/05/01  12:45:30  quinn
+ * Support use of local tag names in abs file.
+ *
+ * Revision 1.3  1995/11/13  09:27:35  quinn
  * Fiddling with the variant stuff.
  *
  * Revision 1.2  1995/11/01  13:54:46  quinn
@@ -139,6 +145,8 @@ static Z_ElementData *nodetoelementdata(data1_node *n, int select, int leaf,
     }
     else if (n->which == DATA1N_data && (leaf || n->parent->num_children == 1))
     {
+       char str[512];
+
        switch (n->u.data.what)
        {
            case DATA1I_num:
@@ -152,6 +160,12 @@ static Z_ElementData *nodetoelementdata(data1_node *n, int select, int leaf,
                memcpy(res->u.string, n->u.data.data, n->u.data.len);
                res->u.string[n->u.data.len] = '\0';
                break;
+           case DATA1I_oid:
+               res->which = Z_ElementData_oid;
+               strncpy(str, n->u.data.data, n->u.data.len);
+               str[n->u.data.len] = '\0';
+               res->u.oid = odr_getoidbystr(o, str);
+               break;
            default:
                logf(LOG_WARN, "Can't handle datatype.");
                return 0;
@@ -202,7 +216,7 @@ static Z_TaggedElement *nodetotaggedelement(data1_node *n, int select, ODR o)
     }
 
     res->tagType = odr_malloc(o, sizeof(int));
-    *res->tagType = tag ? tag->tagset->type : 3;
+    *res->tagType = (tag && tag->tagset) ? tag->tagset->type : 3;
     res->tagValue = odr_malloc(o, sizeof(Z_StringOrNumeric));
     if (tag && tag->which == DATA1T_numeric)
     {