X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-cql2rpn.cpp;h=c14242804b7e3d61bb9d94611030f2f83e5aca78;hb=008ab62580aa7f271e95871b9d2df2ac9e7a7a28;hp=ec3fa54797b81ab6128b14c5cb37db88ecf841cf;hpb=307a8638d6429b0f77ad762d52309c550e45648c;p=yazpp-moved-to-github.git diff --git a/src/yaz-cql2rpn.cpp b/src/yaz-cql2rpn.cpp index ec3fa54..c142428 100644 --- a/src/yaz-cql2rpn.cpp +++ b/src/yaz-cql2rpn.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2003, Index Data. * See the file LICENSE for details. * - * $Id: yaz-cql2rpn.cpp,v 1.1 2003-12-16 14:17:01 adam Exp $ + * $Id: yaz-cql2rpn.cpp,v 1.3 2004-01-06 21:17:42 adam Exp $ */ #include @@ -27,8 +27,10 @@ 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(); @@ -37,7 +39,7 @@ int Yaz_cql2rpn::query_transform(const char *cql_query, if (r) { yaz_log(LOG_LOG, "CQL Parse Error"); - return r; + r = 10; } else { @@ -56,19 +58,21 @@ int Yaz_cql2rpn::query_transform(const char *cql_query, int code = yaz_pqf_error(pp, &pqf_msg, &off); yaz_log(LOG_WARN, "PQF Parser Error %s (code %d)", pqf_msg, code); - yaz_pqf_destroy(pp); - return -1; + r = -1; } yaz_pqf_destroy(pp); } else { - const char *addinfo; - cql_transform_error(m_transform, &addinfo); + r = cql_transform_error(m_transform, &addinfo); yaz_log(LOG_LOG, "CQL Transform Error %d %s", r, addinfo ? addinfo : ""); - return -2; } } - return 0; + cql_parser_destroy(cp); + if (addinfo) + *addinfop = odr_strdup(o, addinfo); + else + *addinfop = 0; + return r; }