Fix sample PQF
[yaz-moved-to-github.git] / cql / cqltransform.c
index d5e3ddb..b538ce7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: cqltransform.c,v 1.1 2003-01-06 08:20:27 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);
     }
 }
@@ -431,6 +437,7 @@ int cql_transform(cql_transform_t ct,
         }
     }
     cql_transform_r (ct, cn, pr, client_data, prefix_ar, 1);
+    cql_node_destroy(prefix_ar[0]);
     return ct->error;
 }