Fixed bug #2068: pkg-config trouble.
[yaz-moved-to-github.git] / src / querytowrbuf.c
index 70e23df..2cfd081 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (C) 1995-2005, Index Data ApS
+ * Copyright (C) 1995-2007, Index Data ApS
  * All rights reserved.
  *
- * $Id: querytowrbuf.c,v 1.4 2006-04-19 10:05:03 adam Exp $
+ * $Id: querytowrbuf.c,v 1.11 2007-05-08 08:22:36 adam Exp $
  */
 
 /** \file querytowrbuf.c
@@ -14,6 +14,7 @@
 
 #include <yaz/logrpn.h>
 #include <yaz/querytowrbuf.h>
+#include <yaz/oid_db.h>
 
 static void yaz_term_to_wrbuf(WRBUF b, const char *term, int len)
 {
@@ -40,14 +41,18 @@ static void yaz_attribute_element_to_wrbuf(WRBUF b,
                                            const Z_AttributeElement *element)
 {
     int i;
-    char *setname="";
-    char *sep = ""; /* optional space after attrset name */
+    char oid_name_str[OID_STR_MAX];
+    const char *setname = 0;
+    char *sep = " "; /* optional space after attrset name */
     if (element->attributeSet)
     {
-        oident *attrset;
-        attrset = oid_getentbyoid (element->attributeSet);
-        setname = attrset->desc;
-        sep = " ";
+        setname = yaz_oid_to_string_buf(element->attributeSet, 
+                                        0, oid_name_str);
+    }
+    if (!setname)
+    {
+        setname = "";
+        sep = "";
     }
     switch (element->which) 
     {
@@ -181,14 +186,13 @@ static void yaz_rpnstructure_to_wrbuf(WRBUF b, const Z_RPNStructure *zs)
 
 void yaz_rpnquery_to_wrbuf(WRBUF b, const Z_RPNQuery *rpn)
 {
-    oident *attrset;
-    enum oid_value ast;
-    
-    attrset = oid_getentbyoid (rpn->attributeSetId);
-    if (attrset)
+    if (rpn->attributeSetId)
     {
-        ast = attrset->value;
-        wrbuf_printf(b, "@attrset %s ", attrset->desc);
+        char oid_name_str[OID_STR_MAX];
+        const char *oid_name = yaz_oid_to_string_buf(rpn->attributeSetId,
+                                                     0, oid_name_str);
+        if (oid_name)
+            wrbuf_printf(b, "@attrset %s ", oid_name);
     } 
     yaz_rpnstructure_to_wrbuf(b, rpn->RPNStructure);
     wrbuf_chop_right(b);
@@ -202,44 +206,52 @@ void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q)
     {
     case Z_Query_type_1: 
     case Z_Query_type_101:
-        wrbuf_printf(b,"RPN: ");
+        wrbuf_printf(b,"RPN ");
         yaz_rpnquery_to_wrbuf(b, q->u.type_1);
         break;
     case Z_Query_type_2:
-        wrbuf_printf(b, "CCL: %.*s", q->u.type_2->len, q->u.type_2->buf);
+        wrbuf_printf(b, "CCL %.*s", q->u.type_2->len, q->u.type_2->buf);
         break;
     case Z_Query_type_100:
-        wrbuf_printf(b, "Z39.58: %.*s", q->u.type_100->len,
+        wrbuf_printf(b, "Z39.58 %.*s", q->u.type_100->len,
                      q->u.type_100->buf);
         break;
     case Z_Query_type_104:
         if (q->u.type_104->which == Z_External_CQL)
-            wrbuf_printf(b, "CQL: %s", q->u.type_104->u.cql);
+            wrbuf_printf(b, "CQL %s", q->u.type_104->u.cql);
         else
-            wrbuf_printf(b,"Unknown type 104 query %d", q->u.type_104->which);
+            wrbuf_printf(b,"UNKNOWN type 104 query %d", q->u.type_104->which);
     }
 }
 
 void yaz_scan_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt,
-                       oid_value ast)
+                       const Odr_oid *attrbute_set)
 {
     /* should print attr set here */
+    wrbuf_printf(b, "RPN ");
     yaz_apt_to_wrbuf(b, zapt);
 }
 
-/* obsolete */
-void wrbuf_scan_term(WRBUF b, const Z_AttributesPlusTerm *zapt, oid_value ast)
-{
-    yaz_apt_to_wrbuf(b, zapt);
-}
-
-/* obsolete */
-void wrbuf_put_zquery(WRBUF b, const Z_Query *q)
+void wrbuf_diags(WRBUF b, int num_diagnostics,Z_DiagRec **diags)
 {
-    yaz_query_to_wrbuf(b, q);
+    /* we only dump the first diag - that keeps the log cleaner. */
+    wrbuf_printf(b," ERROR ");
+    if (diags[0]->which != Z_DiagRec_defaultFormat)
+        wrbuf_printf(b,"(diag not in default format?)");
+    else
+    {
+        Z_DefaultDiagFormat *e=diags[0]->u.defaultFormat;
+        if (e->condition)
+            wrbuf_printf(b, "%d ",*e->condition);
+        else
+            wrbuf_printf(b, "?? ");
+        if ((e->which==Z_DefaultDiagFormat_v2Addinfo) && (e->u.v2Addinfo))
+            wrbuf_printf(b,"%s ",e->u.v2Addinfo);
+        else if ((e->which==Z_DefaultDiagFormat_v3Addinfo) && (e->u.v3Addinfo))
+            wrbuf_printf(b,"%s ",e->u.v3Addinfo);
+    }
 }
 
-
 /*
  * Local variables:
  * c-basic-offset: 4