Bump year
[yaz-moved-to-github.git] / src / cqltransform.c
index 00305f7..29ff07a 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: cqltransform.c,v 1.9 2004-05-25 14:06:15 adam Exp $
-   Copyright (C) 2002-2004
+/* $Id: cqltransform.c,v 1.13 2005-01-15 19:47:11 adam Exp $
+   Copyright (C) 1995-2005, Index Data ApS
    Index Data Aps
 
 This file is part of the YAZ toolkit.
@@ -7,6 +7,11 @@ This file is part of the YAZ toolkit.
 See the file LICENSE.
 */
 
+/**
+ * \file cqltransform.c
+ * \brief Implements CQL transform (CQL to RPN conversion).
+ */
+
 #include <stdlib.h>
 #include <string.h>
 #include <yaz/cql.h>
@@ -208,14 +213,14 @@ int cql_pr_attr(cql_transform_t ct, const char *category,
  * characters starting at `term', or a null pointer of there are
  * none -- like memchr().
  */
-static char *wcchar(const char *term, int length)
+static const char *wcchar(const char *term, int length)
 {
-    char *best = 0;
-    char *current;
+    const char *best = 0;
+    const char *current;
     char *whichp;
 
     for (whichp = "*?"; *whichp != '\0'; whichp++) {
-       current = memchr(term, *whichp, length);
+       current = (const char *) memchr(term, *whichp, length);
        if (current != 0 && (best == 0 || current < best))
            best = current;
     }
@@ -302,7 +307,7 @@ void emit_term(cql_transform_t ct,
            char *mem;
             cql_pr_attr(ct, "truncation", "z3958", 0,
                         pr, client_data, 28);
-           mem = xmalloc(length+1);
+           mem = (char *) xmalloc(length+1);
             for (i = 0; i < length; i++) {
                if (term[i] == '*')      mem[i] = '?';
                else if (term[i] == '?') mem[i] = '#';
@@ -450,6 +455,7 @@ int cql_transform(cql_transform_t ct,
                   void *client_data)
 {
     struct cql_prop_entry *e;
+    NMEM nmem = nmem_create();
 
     ct->error = 0;
     if (ct->addinfo)
@@ -459,11 +465,12 @@ int cql_transform(cql_transform_t ct,
     for (e = ct->entry; e ; e = e->next)
     {
         if (!memcmp(e->pattern, "set.", 4))
-           cql_apply_prefix(cn, e->pattern+4, e->value);
+           cql_apply_prefix(nmem, cn, e->pattern+4, e->value);
         else if (!strcmp(e->pattern, "set"))
-           cql_apply_prefix(cn, 0, e->value);
+           cql_apply_prefix(nmem, cn, 0, e->value);
     }
     cql_transform_r (ct, cn, pr, client_data);
+    nmem_destroy(nmem);
     return ct->error;
 }