* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.115 2007-03-07 14:26:44 adam Exp $
+ * $Id: zoom-c.c,v 1.118 2007-03-19 20:58:34 adam Exp $
*/
/**
* \file zoom-c.c
#include <yaz/cql.h>
#include <yaz/ccl.h>
-#define TASK_FIX 1
-
static int log_api = 0;
static int log_details = 0;
zoom_complete
} zoom_ret;
+static void resultset_destroy(ZOOM_resultset r);
static zoom_ret ZOOM_connection_send_init(ZOOM_connection c);
static zoom_ret do_write_ex(ZOOM_connection c, char *buf_out, int len_out);
static char *cql2pqf(ZOOM_connection c, const char *cql);
c, c->host_port ? c->host_port : "<>", dset, error,
addinfo ? addinfo : "",
addinfo2 ? addinfo2 : "");
-#if TASK_FIX
ZOOM_connection_remove_tasks(c);
-#endif
}
}
switch (task->which)
{
case ZOOM_TASK_SEARCH:
- ZOOM_resultset_destroy(task->u.search.resultset);
+ resultset_destroy(task->u.search.resultset);
xfree(task->u.search.syntax);
xfree(task->u.search.elementSetName);
break;
case ZOOM_TASK_RETRIEVE:
- ZOOM_resultset_destroy(task->u.retrieve.resultset);
+ resultset_destroy(task->u.retrieve.resultset);
xfree(task->u.retrieve.syntax);
xfree(task->u.retrieve.elementSetName);
break;
ZOOM_package_destroy(task->u.package);
break;
case ZOOM_TASK_SORT:
- ZOOM_resultset_destroy(task->u.sort.resultset);
+ resultset_destroy(task->u.sort.resultset);
ZOOM_query_destroy(task->u.sort.q);
break;
default:
WRBUF wr = wrbuf_alloc();
ccl_pquery(wr, rpn);
ccl_rpn_delete(rpn);
- ret = ZOOM_query_prefix(s, wrbuf_buf(wr));
- wrbuf_free(wr, 1);
+ ret = ZOOM_query_prefix(s, wrbuf_cstr(wr));
+ wrbuf_destroy(wr);
}
ccl_qual_rm(&bibset);
return ret;
return r;
}
-/*
- * This is the old result-set sorting API, which is maintained only
- * for the sake of binary compatibility. There is no reason ever to
- * use this rather than ZOOM_resultset_sort1().
- */
-ZOOM_API(void)
+ZOOM_API(int)
ZOOM_resultset_sort(ZOOM_resultset r,
const char *sort_type, const char *sort_spec)
{
- (void) ZOOM_resultset_sort1(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;
ZOOM_query newq;
for (rc = r->record_hash[i]; rc; rc = rc->next)
{
if (rc->rec.wrbuf_marc)
- wrbuf_free(rc->rec.wrbuf_marc, 1);
+ wrbuf_destroy(rc->rec.wrbuf_marc);
if (rc->rec.wrbuf_iconv)
- wrbuf_free(rc->rec.wrbuf_iconv, 1);
+ wrbuf_destroy(rc->rec.wrbuf_iconv);
if (rc->rec.wrbuf_opac)
- wrbuf_free(rc->rec.wrbuf_opac, 1);
+ wrbuf_destroy(rc->rec.wrbuf_opac);
}
r->record_hash[i] = 0;
}
ZOOM_API(void)
ZOOM_resultset_destroy(ZOOM_resultset r)
{
+ resultset_destroy(r);
+}
+
+static void resultset_destroy(ZOOM_resultset r)
+{
if (!r)
return;
(r->refcount)--;
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.115 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.118 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion =
if (!rec)
return;
if (rec->wrbuf_marc)
- wrbuf_free(rec->wrbuf_marc, 1);
+ wrbuf_destroy(rec->wrbuf_marc);
if (rec->wrbuf_iconv)
- wrbuf_free(rec->wrbuf_iconv, 1);
+ wrbuf_destroy(rec->wrbuf_iconv);
if (rec->wrbuf_opac)
- wrbuf_free(rec->wrbuf_opac, 1);
+ wrbuf_destroy(rec->wrbuf_opac);
odr_destroy(rec->odr);
xfree(rec);
}
yaz_iconv_close(cd);
if (len)
*len = wrbuf_len(rec->wrbuf_marc);
- return wrbuf_buf(rec->wrbuf_marc);
+ return wrbuf_cstr(rec->wrbuf_marc);
}
yaz_marc_destroy(mt);
if (cd)
}
wrbuf_write(rec->wrbuf_iconv, outbuf, outp - outbuf);
}
- wrbuf_puts(rec->wrbuf_iconv, "");
- buf = wrbuf_buf(rec->wrbuf_iconv);
+ buf = wrbuf_cstr(rec->wrbuf_iconv);
sz = wrbuf_len(rec->wrbuf_iconv);
yaz_iconv_close(cd);
}
}
ZOOM_API(ZOOM_scanset)
- ZOOM_connection_scan(ZOOM_connection c, const char *start)
+ ZOOM_connection_scan_pqf(ZOOM_connection c, const char *start)
{
ZOOM_scanset s;
ZOOM_query q = ZOOM_query_create();
ZOOM_query_prefix(q, start);
- s = ZOOM_connection_scan1(c, q);
+ s = ZOOM_connection_scan(c, q);
ZOOM_query_destroy(q);
return s;
}
ZOOM_API(ZOOM_scanset)
- ZOOM_connection_scan1(ZOOM_connection c, ZOOM_query q)
+ ZOOM_connection_scan(ZOOM_connection c, ZOOM_query q)
{
char *start;
char *freeme = 0;
return ZOOM_options_get(scan->options, key);
}
-ZOOM_API(void)
+ZOOM_API(int)
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(void)
+ZOOM_API(int)
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(void)
+ZOOM_API(int)
ZOOM_connection_option_set(ZOOM_connection c, const char *key,
const char *val)
{
ZOOM_options_set(c->options, key, val);
+ return 0;
}
-ZOOM_API(void)
+ZOOM_API(int)
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(void)
+ZOOM_API(int)
ZOOM_resultset_option_set(ZOOM_resultset r, const char *key,
const char *val)
{
ZOOM_options_set(r->options, key, val);
+ return 0;
}