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
odr_create_Odr_oct: null terminate the buffer
[yaz-moved-to-github.git]
/
src
/
cqlutil.c
diff --git
a/src/cqlutil.c
b/src/cqlutil.c
index
7dba5a7
..
ba477de
100644
(file)
--- a/
src/cqlutil.c
+++ b/
src/cqlutil.c
@@
-1,5
+1,5
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2013 Index Data
* See the file LICENSE for details.
*/
/**
* See the file LICENSE for details.
*/
/**
@@
-21,7
+21,7
@@
void cql_fputs(const char *buf, void *client_data)
fputs(buf, f);
}
fputs(buf, f);
}
-struct cql_node *cql_node_dup (NMEM nmem, struct cql_node *cp)
+struct cql_node *cql_node_dup(NMEM nmem, struct cql_node *cp)
{
struct cql_node *cn = 0;
{
struct cql_node *cn = 0;
@@
-34,7
+34,7
@@
struct cql_node *cql_node_dup (NMEM nmem, struct cql_node *cp)
cp->u.st.relation,
cp->u.st.term);
cn->u.st.modifiers = cql_node_dup(nmem, cp->u.st.modifiers);
cp->u.st.relation,
cp->u.st.term);
cn->u.st.modifiers = cql_node_dup(nmem, cp->u.st.modifiers);
- cn->u.st.index_uri = cp->u.st.index_uri ?
+ cn->u.st.index_uri = cp->u.st.index_uri ?
nmem_strdup(nmem, cp->u.st.index_uri) : 0;
cn->u.st.relation_uri = cp->u.st.relation_uri ?
nmem_strdup(nmem, cp->u.st.relation_uri) : 0;
nmem_strdup(nmem, cp->u.st.index_uri) : 0;
cn->u.st.relation_uri = cp->u.st.relation_uri ?
nmem_strdup(nmem, cp->u.st.relation_uri) : 0;
@@
-43,6
+43,11
@@
struct cql_node *cql_node_dup (NMEM nmem, struct cql_node *cp)
cn = cql_node_mk_boolean(nmem, cp->u.boolean.value);
cn->u.boolean.left = cql_node_dup(nmem, cp->u.boolean.left);
cn->u.boolean.right = cql_node_dup(nmem, cp->u.boolean.right);
cn = cql_node_mk_boolean(nmem, cp->u.boolean.value);
cn->u.boolean.left = cql_node_dup(nmem, cp->u.boolean.left);
cn->u.boolean.right = cql_node_dup(nmem, cp->u.boolean.right);
+ break;
+ case CQL_NODE_SORT:
+ cn = cql_node_mk_sort(nmem, cp->u.sort.index, cp->u.sort.modifiers);
+ cn->u.sort.next = cql_node_dup(nmem, cp->u.sort.next);
+ cn->u.sort.search = cql_node_dup(nmem, cp->u.sort.search);
}
return cn;
}
}
return cn;
}
@@
-93,6
+98,7
@@
struct cql_node *cql_node_mk_sort(NMEM nmem, const char *index,
p->u.sort.index = nmem_strdup(nmem, index);
p->u.sort.modifiers = modifiers;
p->u.sort.next = 0;
p->u.sort.index = nmem_strdup(nmem, index);
p->u.sort.modifiers = modifiers;
p->u.sort.next = 0;
+ p->u.sort.search = 0;
return p;
}
return p;
}
@@
-110,7
+116,7
@@
struct cql_node *cql_apply_prefix(NMEM nmem,
if (!n->u.st.index_uri && n->u.st.index)
{ /* not yet resolved.. */
const char *cp = strchr(n->u.st.index, '.');
if (!n->u.st.index_uri && n->u.st.index)
{ /* not yet resolved.. */
const char *cp = strchr(n->u.st.index, '.');
- if (prefix && cp &&
+ if (prefix && cp &&
strlen(prefix) == (size_t) (cp - n->u.st.index) &&
!cql_strncmp(n->u.st.index, prefix, strlen(prefix)))
{
strlen(prefix) == (size_t) (cp - n->u.st.index) &&
!cql_strncmp(n->u.st.index, prefix, strlen(prefix)))
{
@@
-141,6
+147,10
@@
struct cql_node *cql_apply_prefix(NMEM nmem,
cql_apply_prefix(nmem, n->u.boolean.left, prefix, uri);
cql_apply_prefix(nmem, n->u.boolean.right, prefix, uri);
}
cql_apply_prefix(nmem, n->u.boolean.left, prefix, uri);
cql_apply_prefix(nmem, n->u.boolean.right, prefix, uri);
}
+ else if (n->which == CQL_NODE_SORT)
+ {
+ cql_apply_prefix(nmem, n->u.sort.search, prefix, uri);
+ }
return n;
}
return n;
}