X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcql2ccl.c;h=4a3932e2ccd5a0bc012b2834a0d77b336f1d3a3f;hp=48bb284c82f3acbb2bcc2c6462d6e7cc8bc3a7ef;hb=443e78f2e7d7894a1a9cb3cac79e4b1a84ec7a11;hpb=211fa151f2239cfecd08a212e00be8d27f7a35a7 diff --git a/src/cql2ccl.c b/src/cql2ccl.c index 48bb284..4a3932e 100644 --- a/src/cql2ccl.c +++ b/src/cql2ccl.c @@ -26,9 +26,19 @@ static void pr_term(struct cql_node *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; @@ -98,7 +108,10 @@ static int node(struct cql_node *cn, 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++; @@ -120,15 +133,19 @@ static int bool(struct cql_node *cn, void (*pr)(const char *buf, void *client_data), void *client_data) { + char *value = cn->u.boolean.value; 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(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);