X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-cql2rpn.cpp;h=f8ca22b0b4d180d30a74b1b3aaefc14b4e733734;hb=dcd535eeb3ceaa9cfb19395f8e1780609f7c7d4b;hp=b012d92c4096e8eb937a6d30ffbec563d6d3ff3a;hpb=4c287a6c8de2a59e1b9d249c0166bfb6c37cd571;p=yazpp-moved-to-github.git diff --git a/src/yaz-cql2rpn.cpp b/src/yaz-cql2rpn.cpp index b012d92..f8ca22b 100644 --- a/src/yaz-cql2rpn.cpp +++ b/src/yaz-cql2rpn.cpp @@ -1,13 +1,13 @@ /* - * Copyright (c) 1998-2003, Index Data. + * Copyright (c) 1998-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-cql2rpn.cpp,v 1.2 2003-12-20 22:44:30 adam Exp $ + * $Id: yaz-cql2rpn.cpp,v 1.6 2004-12-13 20:50:54 adam Exp $ */ #include #include -#include +#include Yaz_cql2rpn::Yaz_cql2rpn() { @@ -27,15 +27,20 @@ void Yaz_cql2rpn::set_pqf_file(const char *fname) } int Yaz_cql2rpn::query_transform(const char *cql_query, - Z_RPNQuery **rpnquery, ODR o) + Z_RPNQuery **rpnquery, ODR o, + char **addinfop) { + const char *addinfo = 0; if (!m_transform) return -3; CQL_parser cp = cql_parser_create(); int r = cql_parser_string(cp, cql_query); if (r) - yaz_log(LOG_LOG, "CQL Parse Error"); + { + yaz_log(YLOG_LOG, "CQL Parse Error"); + r = 10; + } else { char rpn_buf[1024]; @@ -51,7 +56,7 @@ int Yaz_cql2rpn::query_transform(const char *cql_query, size_t off; const char *pqf_msg; int code = yaz_pqf_error(pp, &pqf_msg, &off); - yaz_log(LOG_WARN, "PQF Parser Error %s (code %d)", + yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)", pqf_msg, code); r = -1; } @@ -59,13 +64,15 @@ int Yaz_cql2rpn::query_transform(const char *cql_query, } else { - const char *addinfo; - cql_transform_error(m_transform, &addinfo); - yaz_log(LOG_LOG, "CQL Transform Error %d %s", r, + r = cql_transform_error(m_transform, &addinfo); + yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r, addinfo ? addinfo : ""); - r = -2; } } cql_parser_destroy(cp); + if (addinfo) + *addinfop = odr_strdup(o, addinfo); + else + *addinfop = 0; return r; }