/*
- * 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
#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)
{
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)
{
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);
{
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