projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cql_transform_rpn2cql_stream back to error in cql_transform_t
[yaz-moved-to-github.git]
/
src
/
rpn2cql.c
diff --git
a/src/rpn2cql.c
b/src/rpn2cql.c
index
cac867d
..
7763db3
100644
(file)
--- a/
src/rpn2cql.c
+++ b/
src/rpn2cql.c
@@
-1,5
+1,5
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2013 Index Data
+ * Copyright (C) Index Data
* See the file LICENSE for details.
*/
/**
* See the file LICENSE for details.
*/
/**
@@
-20,11
+20,6
@@
#include <yaz/wrbuf.h>
#include <yaz/logrpn.h> /* For yaz_prox_unit_name() */
#include <yaz/wrbuf.h>
#include <yaz/logrpn.h> /* For yaz_prox_unit_name() */
-static void wrbuf_vputs(const char *buf, void *client_data)
-{
- wrbuf_write((WRBUF) client_data, buf, strlen(buf));
-}
-
static const char *lookup_index_from_string_attr(Z_AttributeList *attributes)
{
int j;
static const char *lookup_index_from_string_attr(Z_AttributeList *attributes)
{
int j;
@@
-121,11
+116,7
@@
static int rpn2cql_attr(cql_transform_t ct,
relation = lookup_relation_index_from_attr(attributes);
if (!index)
relation = lookup_relation_index_from_attr(attributes);
if (!index)
- {
- cql_transform_set_error(ct,
- YAZ_BIB1_UNSUPP_USE_ATTRIBUTE, 0);
- return -1;
- }
+ return YAZ_BIB1_UNSUPP_USE_ATTRIBUTE;
/* for serverChoice we omit index+relation+structure */
if (strcmp(index, "cql.serverChoice"))
{
/* for serverChoice we omit index+relation+structure */
if (strcmp(index, "cql.serverChoice"))
{
@@
-180,12
+171,8
@@
static int rpn2cql_simple(cql_transform_t ct,
void *client_data,
Z_Operand *q, WRBUF w)
{
void *client_data,
Z_Operand *q, WRBUF w)
{
- int ret = 0;
if (q->which != Z_Operand_APT)
if (q->which != Z_Operand_APT)
- {
- ret = -1;
- cql_transform_set_error(ct, YAZ_BIB1_RESULT_SET_UNSUPP_AS_A_SEARCH_TERM, 0);
- }
+ return YAZ_BIB1_RESULT_SET_UNSUPP_AS_A_SEARCH_TERM;
else
{
Z_AttributesPlusTerm *apt = q->u.attributesPlusTerm;
else
{
Z_AttributesPlusTerm *apt = q->u.attributesPlusTerm;
@@
-194,9
+181,12
@@
static int rpn2cql_simple(cql_transform_t ct,
size_t lterm = 0;
Odr_int trunc = lookup_truncation(apt->attributes);
size_t i;
size_t lterm = 0;
Odr_int trunc = lookup_truncation(apt->attributes);
size_t i;
+ int r;
wrbuf_rewind(w);
wrbuf_rewind(w);
- ret = rpn2cql_attr(ct, apt->attributes, w);
+ r = rpn2cql_attr(ct, apt->attributes, w);
+ if (r)
+ return r;
switch (term->which)
{
switch (term->which)
{
@@
-212,8
+202,7
@@
static int rpn2cql_simple(cql_transform_t ct,
lterm = strlen(sterm);
break;
default:
lterm = strlen(sterm);
break;
default:
- cql_transform_set_error(ct, YAZ_BIB1_TERM_TYPE_UNSUPP, 0);
- return -1;
+ return YAZ_BIB1_TERM_TYPE_UNSUPP;
}
if (trunc <= 3 || trunc == 100 || trunc == 102 || trunc == 104)
}
if (trunc <= 3 || trunc == 100 || trunc == 102 || trunc == 104)
@@
-266,14
+255,11
@@
static int rpn2cql_simple(cql_transform_t ct,
}
else
{
}
else
{
- cql_transform_set_error(
- ct, YAZ_BIB1_UNSUPP_TRUNCATION_ATTRIBUTE, 0);
- ret = -1;
+ return YAZ_BIB1_UNSUPP_TRUNCATION_ATTRIBUTE;
}
}
- if (ret == 0)
- pr(wrbuf_cstr(w), client_data);
+ pr(wrbuf_cstr(w), client_data);
}
}
- return ret;
+ return 0;
}
}
@@
-297,7
+283,7
@@
static int rpn2cql_structure(cql_transform_t ct,
r = rpn2cql_structure(ct, pr, client_data, q->u.complex->s1, 1, w);
if (r)
return r;
r = rpn2cql_structure(ct, pr, client_data, q->u.complex->s1, 1, w);
if (r)
return r;
- switch(op->which)
+ switch (op->which)
{
case Z_Operator_and:
pr(" and ", client_data);
{
case Z_Operator_and:
pr(" and ", client_data);
@@
-318,10
+304,9
@@
static int rpn2cql_structure(cql_transform_t ct,
pr("/distance", client_data);
if (!prox->relationType ||
*prox->relationType < Z_ProximityOperator_Prox_lessThan ||
pr("/distance", client_data);
if (!prox->relationType ||
*prox->relationType < Z_ProximityOperator_Prox_lessThan ||
- *prox->relationType > Z_ProximityOperator_Prox_notEqual) {
- cql_transform_set_error(ct, YAZ_BIB1_UNSUPP_SEARCH,
- "unrecognised proximity relationType");
- return -1;
+ *prox->relationType > Z_ProximityOperator_Prox_notEqual)
+ {
+ return YAZ_BIB1_UNSUPP_SEARCH;
}
pr(op2name[*prox->relationType-1], client_data);
sprintf(buf, "%ld", (long) *prox->distance);
}
pr(op2name[*prox->relationType-1], client_data);
sprintf(buf, "%ld", (long) *prox->distance);
@@
-357,8
+342,9
@@
int cql_transform_rpn2cql_stream(cql_transform_t ct,
{
int r;
WRBUF w = wrbuf_alloc();
{
int r;
WRBUF w = wrbuf_alloc();
- cql_transform_set_error(ct, 0, 0);
r = rpn2cql_structure(ct, pr, client_data, q->RPNStructure, 0, w);
r = rpn2cql_structure(ct, pr, client_data, q->RPNStructure, 0, w);
+ if (r)
+ cql_transform_set_error(ct, r, 0);
wrbuf_destroy(w);
return r;
}
wrbuf_destroy(w);
return r;
}
@@
-368,7
+354,7
@@
int cql_transform_rpn2cql_wrbuf(cql_transform_t ct,
WRBUF w,
Z_RPNQuery *q)
{
WRBUF w,
Z_RPNQuery *q)
{
- return cql_transform_rpn2cql_stream(ct, wrbuf_vputs, w, q);
+ return cql_transform_rpn2cql_stream(ct, wrbuf_vp_puts, w, q);
}
/*
}
/*