X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fquerytowrbuf.c;h=a120e88c71228065b48fa557311d8c361d43d507;hp=64b2ddc2def0c512431d658f9dc27d5d6ea94d29;hb=3489c6eaceb7ab7f4e8298a2f898dda0c3d0a09c;hpb=7a4064cd15f6c6b34c1180e1bc51f0d0e90da320 diff --git a/src/querytowrbuf.c b/src/querytowrbuf.c index 64b2ddc..a120e88 100644 --- a/src/querytowrbuf.c +++ b/src/querytowrbuf.c @@ -1,12 +1,10 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS - * All rights reserved. - * - * $Id: querytowrbuf.c,v 1.9 2007-04-12 13:52:57 adam Exp $ +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2008 Index Data + * See the file LICENSE for details. */ /** \file querytowrbuf.c - \brief Query to WRBUF (to strings) + \brief Convert Z39.50 Z_Query to PQF (as WRBUF string) */ #include @@ -16,7 +14,7 @@ #include #include -static void yaz_term_to_wrbuf(WRBUF b, const char *term, int len) +void yaz_encode_pqf_term(WRBUF b, const char *term, int len) { int i; for (i = 0; i < len; i++) @@ -110,13 +108,13 @@ static void yaz_apt_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt) switch (zapt->term->which) { case Z_Term_general: - yaz_term_to_wrbuf(b, (const char *)zapt->term->u.general->buf, - zapt->term->u.general->len); + yaz_encode_pqf_term(b, (const char *)zapt->term->u.general->buf, + zapt->term->u.general->len); break; case Z_Term_characterString: wrbuf_printf(b, "@term string "); - yaz_term_to_wrbuf(b, zapt->term->u.characterString, - strlen(zapt->term->u.characterString)); + yaz_encode_pqf_term(b, zapt->term->u.characterString, + strlen(zapt->term->u.characterString)); break; case Z_Term_numeric: wrbuf_printf(b, "@term numeric %d ", *zapt->term->u.numeric); @@ -174,8 +172,8 @@ static void yaz_rpnstructure_to_wrbuf(WRBUF b, const Z_RPNStructure *zs) else if (zs->u.simple->which == Z_Operand_resultSetId) { wrbuf_printf(b, "@set "); - yaz_term_to_wrbuf(b, zs->u.simple->u.resultSetId, - strlen(zs->u.simple->u.resultSetId)); + yaz_encode_pqf_term(b, zs->u.simple->u.resultSetId, + strlen(zs->u.simple->u.resultSetId)); } else wrbuf_printf (b, "(unknown simple structure)"); @@ -225,13 +223,33 @@ void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q) } void yaz_scan_to_wrbuf(WRBUF b, const Z_AttributesPlusTerm *zapt, - const int *attrbute_set) + const Odr_oid *attrbute_set) { /* should print attr set here */ wrbuf_printf(b, "RPN "); yaz_apt_to_wrbuf(b, zapt); } +void wrbuf_diags(WRBUF b, int num_diagnostics,Z_DiagRec **diags) +{ + /* 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