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
Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/yaz
[yaz-moved-to-github.git]
/
src
/
cql2ccl.c
diff --git
a/src/cql2ccl.c
b/src/cql2ccl.c
index
48bb284
..
4a3932e
100644
(file)
--- a/
src/cql2ccl.c
+++ b/
src/cql2ccl.c
@@
-26,9
+26,19
@@
static void pr_term(struct cql_node *cn,
{
while (cn)
{
{
while (cn)
{
- pr("\"", client_data);
- pr(cn->u.st.term, client_data);
- pr("\"", client_data);
+ const char *cp;
+ cp = cn->u.st.term;
+ while (*cp)
+ {
+ char x[2];
+ if (*cp == '*')
+ x[0] = '?';
+ else
+ x[0] = *cp;
+ x[1] = 0;
+ pr(x, client_data);
+ cp++;
+ }
if (cn->u.st.extra_terms)
pr(" ", client_data);
cn = cn->u.st.extra_terms;
if (cn->u.st.extra_terms)
pr(" ", client_data);
cn = cn->u.st.extra_terms;
@@
-98,7
+108,10
@@
static int node(struct cql_node *cn,
while (*cp && *cp != ' ')
{
char x[2];
while (*cp && *cp != ' ')
{
char x[2];
- x[0] = *cp;
+ if (*cp == '*')
+ x[0] = '?';
+ else
+ x[0] = *cp;
x[1] = '\0';
pr(x, client_data);
cp++;
x[1] = '\0';
pr(x, client_data);
cp++;
@@
-120,15
+133,19
@@
static int bool(struct cql_node *cn,
void (*pr)(const char *buf, void *client_data),
void *client_data)
{
void (*pr)(const char *buf, void *client_data),
void *client_data)
{
+ char *value = cn->u.boolean.value;
int r;
int r;
+ /* Rather lame initial attempt at interpreting proximity */
+ if (!strcmp(value, "prox")) value = "!";
+
pr("(", client_data);
r = cql_to_ccl_r(cn->u.boolean.left, pr, client_data);
if (r)
return r;
pr(" ", client_data);
pr("(", client_data);
r = cql_to_ccl_r(cn->u.boolean.left, pr, client_data);
if (r)
return r;
pr(" ", client_data);
- pr(cn->u.boolean.value, client_data);
+ pr(value, client_data);
pr(" ", client_data);
r = cql_to_ccl_r(cn->u.boolean.right, pr, client_data);
pr(" ", client_data);
r = cql_to_ccl_r(cn->u.boolean.right, pr, client_data);