Updates for yaz/ylog.h
[yazpp-moved-to-github.git] / src / yaz-cql2rpn.cpp
index ec3fa54..d97f9f0 100644 (file)
@@ -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.1 2003-12-16 14:17:01 adam Exp $
+ * $Id: yaz-cql2rpn.cpp,v 1.5 2004-11-30 21:10:30 adam Exp $
  */
 
-#include <yaz/log.h>
+#include <yaz/ylog.h>
 #include <yaz/pquery.h>
-#include <yaz++/proxy.h>
+#include <yaz++/cql2rpn.h>
 
 Yaz_cql2rpn::Yaz_cql2rpn()
 {
@@ -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();
@@ -36,8 +38,8 @@ int Yaz_cql2rpn::query_transform(const char *cql_query,
     int r = cql_parser_string(cp, cql_query);
     if (r)
     {
-       yaz_log(LOG_LOG, "CQL Parse Error");
-       return r;
+       yaz_log(YLOG_LOG, "CQL Parse Error");
+       r = 10;
     }
     else
     {
@@ -54,21 +56,23 @@ 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);
-               yaz_pqf_destroy(pp);
-               return -1;
+               r = -1;
            }
            yaz_pqf_destroy(pp);
        }
        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 : "");
-           return -2;
        }
     }  
-    return 0;
+    cql_parser_destroy(cp);
+    if (addinfo)
+       *addinfop = odr_strdup(o, addinfo);
+    else
+       *addinfop = 0;
+    return r;
 }