void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q) { assert(q); assert(b); switch (q->which) { case Z_Query_type_1: case Z_Query_type_101: 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); break; case Z_Query_type_100: 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); else wrbuf_printf(b,"UNKNOWN type 104 query %d", q->u.type_104->which); } }
void yaz_query_to_wrbuf(WRBUF b, const Z_Query *q) { assert(q); assert(b); switch (q->which) { case Z_Query_type_1: case Z_Query_type_101: wrbuf_puts(b,"RPN "); yaz_rpnquery_to_wrbuf(b, q->u.type_1); break; case Z_Query_type_2: wrbuf_puts(b, "CCL "); wrbuf_write(b, (const char *) q->u.type_2->buf, q->u.type_2->len); break; case Z_Query_type_100: wrbuf_puts(b, "Z39.58 "); wrbuf_write(b, (const char *) q->u.type_100->buf, q->u.type_100->len); break; case Z_Query_type_104: if (q->u.type_104->which == Z_External_CQL) { wrbuf_puts(b, "CQL "); wrbuf_puts(b, q->u.type_104->u.cql); } else wrbuf_printf(b,"UNKNOWN type 104 query %d", q->u.type_104->which); } }
int expect_pqf(const char *pqf, const char *expect_pqf, int expect_error) { YAZ_PQF_Parser parser = yaz_pqf_create(); int res = 0; ODR odr = odr_createmem(ODR_ENCODE); Z_RPNQuery *rpn; if (!parser) return 0; if (!odr) return 0; rpn = yaz_pqf_parse(parser, odr, pqf); if (!rpn) { const char *msg; size_t offset; int got_error = yaz_pqf_error (parser, &msg, &offset); if (expect_error == got_error) res = 1; } else if (expect_error == YAZ_PQF_ERROR_NONE) { WRBUF wrbuf = wrbuf_alloc(); if (wrbuf) { yaz_rpnquery_to_wrbuf(wrbuf, rpn); if (!strcmp(wrbuf_cstr(wrbuf), expect_pqf)) res = 1; wrbuf_destroy(wrbuf); } } yaz_pqf_destroy(parser); odr_destroy(odr); return res; }