X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=cql%2Fcqltransform.c;h=b538ce7a1abc98b24eff9a697a5805a9e7f6527c;hb=006c3df264a95c03bfc557b2004595fc6cc3ee14;hp=7bbfc9fcd72835fcb1b601c9a00fea500f62d4f1;hpb=9ad7a007903707f49428bac36a96f56262d2ec44;p=yaz-moved-to-github.git diff --git a/cql/cqltransform.c b/cql/cqltransform.c index 7bbfc9f..b538ce7 100644 --- a/cql/cqltransform.c +++ b/cql/cqltransform.c @@ -1,4 +1,4 @@ -/* $Id: cqltransform.c,v 1.2 2003-01-11 03:18:53 adam Exp $ +/* $Id: cqltransform.c,v 1.4 2003-02-25 18:08:46 adam Exp $ Copyright (C) 2002-2003 Index Data Aps @@ -26,7 +26,7 @@ struct cql_transform_t_ { cql_transform_t cql_transform_open_FILE(FILE *f) { char line[1024]; - cql_transform_t ct = malloc (sizeof(*ct)); + cql_transform_t ct = (cql_transform_t) malloc (sizeof(*ct)); struct cql_prop_entry **pp = &ct->entry; ct->error = 0; @@ -56,12 +56,12 @@ cql_transform_t cql_transform_open_FILE(FILE *f) if (cp_value_end != cp_value_start && strchr(" \t\r\n", cp_value_end[-1])) cp_value_end--; - *pp = malloc (sizeof(**pp)); - (*pp)->pattern = malloc (cp_pattern_end - line + 1); + *pp = (struct cql_prop_entry *) malloc (sizeof(**pp)); + (*pp)->pattern = (char *) malloc (cp_pattern_end - line + 1); memcpy ((*pp)->pattern, line, cp_pattern_end - line); (*pp)->pattern[cp_pattern_end-line] = 0; - (*pp)->value = malloc (cp_value_end - cp_value_start + 1); + (*pp)->value = (char *) malloc (cp_value_end - cp_value_start + 1); if (cp_value_start != cp_value_end) memcpy ((*pp)->value, cp_value_start, cp_value_end-cp_value_start); (*pp)->value[cp_value_end - cp_value_start] = 0; @@ -360,6 +360,12 @@ void cql_transform_r(cql_transform_t ct, if (cn->u.st.relation && !strcmp(cn->u.st.relation, "=")) cql_pr_attr(ct, "relation.", "eq", "scr", pr, client_data, 19); + else if (cn->u.st.relation && !strcmp(cn->u.st.relation, "<=")) + cql_pr_attr(ct, "relation.", "le", "scr", + pr, client_data, 19); + else if (cn->u.st.relation && !strcmp(cn->u.st.relation, ">=")) + cql_pr_attr(ct, "relation.", "ge", "scr", + pr, client_data, 19); else cql_pr_attr(ct, "relation.", cn->u.st.relation, "eq", pr, client_data, 19); @@ -389,15 +395,15 @@ void cql_transform_r(cql_transform_t ct, } break; case CQL_NODE_BOOL: - if (cn->u.bool.prefixes && prefix_level < 20) - prefix_ar[prefix_level++] = cn->u.bool.prefixes; + if (cn->u.boolean.prefixes && prefix_level < 20) + prefix_ar[prefix_level++] = cn->u.boolean.prefixes; (*pr)("@", client_data); - (*pr)(cn->u.bool.value, client_data); + (*pr)(cn->u.boolean.value, client_data); (*pr)(" ", client_data); - cql_transform_r(ct, cn->u.bool.left, pr, client_data, + cql_transform_r(ct, cn->u.boolean.left, pr, client_data, prefix_ar, prefix_level); - cql_transform_r(ct, cn->u.bool.right, pr, client_data, + cql_transform_r(ct, cn->u.boolean.right, pr, client_data, prefix_ar, prefix_level); } }