Use AM_LDFLAGS instead of LDFLAGS
[yazpp-moved-to-github.git] / src / yaz-cql2rpn.cpp
index ec3fa54..c142428 100644 (file)
@@ -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 <yaz/log.h>
@@ -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;
 }