* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.75 2006-06-13 16:21:42 mike Exp $
+ * $Id: zoom-c.c,v 1.77 2006-06-14 09:15:28 mike Exp $
*/
/**
* \file zoom-c.c
{
char *rpn;
int ret;
+ ZOOM_connection freeme = 0;
yaz_log(log_details, "%p ZOOM_query_cql2rpn str=%s conn=%p", s, str, conn);
if (conn == 0)
- conn = ZOOM_connection_create(0);
+ conn = freeme = ZOOM_connection_create(0);
- if ((rpn = cql2pqf(conn, str)) == 0)
+ rpn = cql2pqf(conn, str);
+ if (freeme != 0)
+ ZOOM_connection_destroy(freeme);
+ if (rpn == 0)
return -1;
ret = ZOOM_query_prefix(s, rpn);
{
char *rpn;
int ret;
+ ZOOM_connection freeme = 0;
yaz_log(log_details, "%p ZOOM_query_ccl2rpn str=%s conn=%p", s, str, conn);
if (conn == 0)
- conn = ZOOM_connection_create(0);
+ conn = freeme = ZOOM_connection_create(0);
- if ((rpn = ccl2pqf(conn, str)) == 0)
+ rpn = ccl2pqf(conn, str);
+ if (freeme != 0)
+ ZOOM_connection_destroy(freeme);
+ if (rpn == 0)
return -1;
ret = ZOOM_query_prefix(s, rpn);
ZOOM_options_get(c->options, "implementationName"),
odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.75 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.77 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion = odr_prepend(c->odr_out,
/*
* We need to check the query-type, so we can recognise CQL and
- * compile it into a form that we can use here. The ZOOM_query
- * structure has no explicit `type' member, but inspection of the
- * ZOOM_query_prefix() and ZOOM_query_cql() functions shows how
- * the structure is set up in each case.
- * ### should add support for CCL here
+ * CCL and compile them into a form that we can use here. The
+ * ZOOM_query structure has no explicit `type' member, but
+ * inspection of the ZOOM_query_prefix() and ZOOM_query_cql()
+ * functions shows how the structure is set up in each case.
*/
if (q->z_query->which == Z_Query_type_1) {
yaz_log(log_api, "%p ZOOM_connection_scan1 q=%p PQF '%s'",
start = freeme = cql2pqf(c, q->query_string);
if (start == 0)
return 0;
+ } else if (q->z_query->which == Z_Query_type_2) {
+ yaz_log(log_api, "%p ZOOM_connection_scan1 q=%p CCL '%s'",
+ c, q, q->query_string);
+ start = freeme = ccl2pqf(c, q->query_string);
+ if (start == 0)
+ return 0;
} else {
yaz_log(YLOG_FATAL, "%p ZOOM_connection_scan1 q=%p unknown type '%s'",
c, q, q->query_string);