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
Support XInclude for XML config
[yaz-moved-to-github.git]
/
src
/
cqltransform.c
diff --git
a/src/cqltransform.c
b/src/cqltransform.c
index
00305f7
..
29ff07a
100644
(file)
--- a/
src/cqltransform.c
+++ b/
src/cqltransform.c
@@
-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.
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.
*/
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>
#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().
*/
* 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++) {
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;
}
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);
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] = '#';
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;
void *client_data)
{
struct cql_prop_entry *e;
+ NMEM nmem = nmem_create();
ct->error = 0;
if (ct->addinfo)
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))
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"))
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);
}
cql_transform_r (ct, cn, pr, client_data);
+ nmem_destroy(nmem);
return ct->error;
}
return ct->error;
}