projects
/
yazpp-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
query_transform: any size for PQF result + minor refactor
[yazpp-moved-to-github.git]
/
src
/
yaz-cql2rpn.cpp
diff --git
a/src/yaz-cql2rpn.cpp
b/src/yaz-cql2rpn.cpp
index
1140bf1
..
711d49d
100644
(file)
--- a/
src/yaz-cql2rpn.cpp
+++ b/
src/yaz-cql2rpn.cpp
@@
-1,9
+1,13
@@
/* This file is part of the yazpp toolkit.
/* This file is part of the yazpp toolkit.
- * Copyright (C) 1998-2010 Index Data and Mike Taylor
+ * Copyright (C) 1998-2013 Index Data and Mike Taylor
* See the file LICENSE for details.
*/
* See the file LICENSE for details.
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <yaz/log.h>
#include <yaz/log.h>
+#include <yaz/diagsrw.h>
#include <yaz/pquery.h>
#include <yazpp/cql2rpn.h>
#include <yaz/pquery.h>
#include <yazpp/cql2rpn.h>
@@
-35,7
+39,7
@@
bool Yaz_cql2rpn::parse_spec_file(const char *fname, int *error)
return m_transform ? true : false;
}
return m_transform ? true : false;
}
-int Yaz_cql2rpn::query_transform(const char *cql_query,
+int Yaz_cql2rpn::query_transform(const char *cql_query,
Z_RPNQuery **rpnquery, ODR o,
char **addinfop)
{
Z_RPNQuery **rpnquery, ODR o,
char **addinfop)
{
@@
-47,18
+51,17
@@
int Yaz_cql2rpn::query_transform(const char *cql_query,
int r = cql_parser_string(cp, cql_query);
if (r)
{
int r = cql_parser_string(cp, cql_query);
if (r)
{
- r = 10;
+ r = YAZ_SRW_QUERY_SYNTAX_ERROR;
}
else
{
}
else
{
- char rpn_buf[10240];
- r = cql_transform_buf(m_transform, cql_parser_result(cp),
- rpn_buf, sizeof(rpn_buf)-1);
+ WRBUF w = wrbuf_alloc();
+ r = cql_transform(m_transform, cql_parser_result(cp), wrbuf_vp_puts, w);
if (!r)
{
YAZ_PQF_Parser pp = yaz_pqf_create();
if (!r)
{
YAZ_PQF_Parser pp = yaz_pqf_create();
- *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
+ *rpnquery = yaz_pqf_parse(pp, o, wrbuf_cstr(w));
if (!*rpnquery)
{
size_t off;
if (!*rpnquery)
{
size_t off;
@@
-72,12
+75,10
@@
int Yaz_cql2rpn::query_transform(const char *cql_query,
{
r = cql_transform_error(m_transform, &addinfo);
}
{
r = cql_transform_error(m_transform, &addinfo);
}
- }
+ wrbuf_destroy(w);
+ }
cql_parser_destroy(cp);
cql_parser_destroy(cp);
- if (addinfo)
- *addinfop = odr_strdup(o, addinfo);
- else
- *addinfop = 0;
+ *addinfop = odr_strdup_null(o, addinfo);
return r;
}
/*
return r;
}
/*