* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.119 2007-03-20 21:37:32 adam Exp $
+ * $Id: zoom-c.c,v 1.122 2007-03-21 11:27:46 adam Exp $
*/
/**
* \file zoom-c.c
return r;
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_resultset_sort(ZOOM_resultset r,
- const char *sort_type, const char *sort_spec)
+ const char *sort_type, const char *sort_spec)
+{
+ (void) ZOOM_resultset_sort(r, sort_type, sort_spec);
+}
+
+ZOOM_API(int)
+ ZOOM_resultset_sort1(ZOOM_resultset r,
+ const char *sort_type, const char *sort_spec)
{
ZOOM_connection c = r->connection;
ZOOM_task task;
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.119 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.122 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion =
}
ZOOM_API(ZOOM_scanset)
- ZOOM_connection_scan_pqf(ZOOM_connection c, const char *start)
+ ZOOM_connection_scan(ZOOM_connection c, const char *start)
{
ZOOM_scanset s;
ZOOM_query q = ZOOM_query_create();
ZOOM_query_prefix(q, start);
- s = ZOOM_connection_scan(c, q);
+ s = ZOOM_connection_scan1(c, q);
ZOOM_query_destroy(q);
return s;
}
ZOOM_API(ZOOM_scanset)
- ZOOM_connection_scan(ZOOM_connection c, ZOOM_query q)
+ ZOOM_connection_scan1(ZOOM_connection c, ZOOM_query q)
{
char *start;
char *freeme = 0;
return ZOOM_options_get(scan->options, key);
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_scanset_option_set(ZOOM_scanset scan, const char *key,
const char *val)
{
ZOOM_options_set(scan->options, key, val);
- return 0;
}
static Z_APDU *create_es_package(ZOOM_package p, int type)
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_package_option_set(ZOOM_package p, const char *key,
const char *val)
{
ZOOM_options_set(p->options, key, val);
- return 0;
}
static int ZOOM_connection_exec_task(ZOOM_connection c)
return ZOOM_options_getl(c->options, key, lenp);
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_connection_option_set(ZOOM_connection c, const char *key,
const char *val)
{
ZOOM_options_set(c->options, key, val);
- return 0;
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_connection_option_setl(ZOOM_connection c, const char *key,
const char *val, int len)
{
ZOOM_options_setl(c->options, key, val, len);
- return 0;
}
ZOOM_API(const char *)
return ZOOM_options_get(r->options, key);
}
-ZOOM_API(int)
+ZOOM_API(void)
ZOOM_resultset_option_set(ZOOM_resultset r, const char *key,
const char *val)
{
ZOOM_options_set(r->options, key, val);
- return 0;
}
}
+static void cql2pqf_wrbuf_puts(const char *buf, void *client_data)
+{
+ WRBUF wrbuf = client_data;
+ wrbuf_puts(wrbuf, buf);
+}
+
/*
* Returns an xmalloc()d string containing RPN that corresponds to the
* CQL passed in. On error, sets the Connection object's error state
{
CQL_parser parser;
int error;
- struct cql_node *node;
const char *cqlfile;
- static cql_transform_t trans;
- char pqfbuf[512];
+ cql_transform_t trans;
+ char *result = 0;
parser = cql_parser_create();
if ((error = cql_parser_string(parser, cql)) != 0) {
return 0;
}
- node = cql_parser_result(parser);
- /* ### Do not call cql_parser_destroy() yet: it destroys `node'! */
-
cqlfile = ZOOM_connection_option_get(c, "cqlfile");
- if (cqlfile == 0) {
- cql_parser_destroy(parser);
- cql_node_destroy(node);
+ if (cqlfile == 0)
+ {
set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, "no CQL transform file");
- return 0;
}
-
- if ((trans = cql_transform_open_fname(cqlfile)) == 0) {
+ else if ((trans = cql_transform_open_fname(cqlfile)) == 0)
+ {
char buf[512];
- cql_parser_destroy(parser);
- cql_node_destroy(node);
sprintf(buf, "can't open CQL transform file '%.200s': %.200s",
cqlfile, strerror(errno));
set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
- return 0;
}
-
- error = cql_transform_buf(trans, node, pqfbuf, sizeof pqfbuf);
- cql_parser_destroy(parser);
- cql_node_destroy(node);
- if (error != 0) {
- char buf[512];
- const char *addinfo;
- error = cql_transform_error(trans, &addinfo);
+ else
+ {
+ WRBUF wrbuf_result = wrbuf_alloc();
+ error = cql_transform(trans, cql_parser_result(parser),
+ cql2pqf_wrbuf_puts, wrbuf_result);
+ if (error != 0) {
+ char buf[512];
+ const char *addinfo;
+ error = cql_transform_error(trans, &addinfo);
+ sprintf(buf, "%.200s (addinfo=%.200s)",
+ cql_strerror(error), addinfo);
+ set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
+ }
+ else
+ {
+ result = xstrdup(wrbuf_cstr(wrbuf_result));
+ }
cql_transform_close(trans);
- sprintf(buf, "%.200s (addinfo=%.200s)", cql_strerror(error), addinfo);
- set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
- return 0;
+ wrbuf_destroy(wrbuf_result);
}
-
- cql_transform_close(trans);
- return xstrdup(pqfbuf);
+ cql_parser_destroy(parser);
+ return result;
}
ZOOM_API(int) ZOOM_connection_fire_event_timeout(ZOOM_connection c)