-/*
- * Copyright (C) 1995-2007, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2008 Index Data
* See the file LICENSE for details.
- *
- * $Id: zoom-c.c,v 1.150 2007-09-21 07:10:08 adam Exp $
*/
/**
* \file zoom-c.c
* if it could cause failure when a lookup fails, but that's hard.
*/
static Odr_oid *zoom_yaz_str_to_z3950oid(ZOOM_connection c,
- int oid_class, const char *str) {
+ oid_class oid_class, const char *str) {
Odr_oid *res = yaz_string_to_oid_odr(yaz_oid_std(), oid_class, str,
c->odr_out);
if (res == 0)
}
}
-#if YAZ_HAVE_XML2
-static void set_HTTP_error(ZOOM_connection c, int error,
- const char *addinfo, const char *addinfo2)
-{
- set_dset_error(c, error, "HTTP", addinfo, addinfo2);
-}
-
static int uri_to_code(const char *uri)
{
int code = 0;
return code;
}
+#if YAZ_HAVE_XML2
+static void set_HTTP_error(ZOOM_connection c, int error,
+ const char *addinfo, const char *addinfo2)
+{
+ set_dset_error(c, error, "HTTP", addinfo, addinfo2);
+}
+
static void set_SRU_error(ZOOM_connection c, Z_SRW_diagnostic *d)
{
const char *uri = d->uri;
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.150 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.154 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion =
return sr;
}
-
#if YAZ_HAVE_XML2
static zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c)
{
sr->u.request->recordPacking = odr_strdup(c->odr_out, option_val);
option_val = ZOOM_resultset_option_get(resultset, "extraArgs");
- if (option_val)
- sr->extra_args = odr_strdup(c->odr_out, option_val);
+ yaz_encode_sru_extra(sr, c->odr_out, option_val);
return send_srw(c, sr);
}
#else
c->odr_out, ZOOM_options_get_int(scan->options, "position", 1));
option_val = ZOOM_options_get(scan->options, "extraArgs");
- if (option_val)
- sr->extra_args = odr_strdup(c->odr_out, option_val);
+ yaz_encode_sru_extra(sr, c->odr_out, option_val);
return send_srw(c, sr);
}
#else
{
Z_ItemOrder *req = (Z_ItemOrder *) odr_malloc(p->odr_out, sizeof(*req));
const char *str;
+ int len;
req->which = Z_IOItemOrder_esRequest;
req->u.esRequest = (Z_IORequest *)
(str ? atoi(str) : 1);
}
- str = ZOOM_options_get(p->options, "doc");
+ str = ZOOM_options_getl(p->options, "doc", &len);
if (str)
{
req->u.esRequest->notToKeep->itemRequest =
- z_ext_record_xml(p->odr_out, str, strlen(str));
+ z_ext_record_xml(p->odr_out, str, len);
}
else
req->u.esRequest->notToKeep->itemRequest = encode_ill_request(p);
Z_APDU *apdu = create_es_package(p, yaz_oid_extserv_xml_es);
Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
Z_External *ext = (Z_External *) odr_malloc(p->odr_out, sizeof(*ext));
- const char *doc = ZOOM_options_get(p->options, "doc");
+ int len;
+ const char *doc = ZOOM_options_getl(p->options, "doc", &len);
if (!doc)
+ {
doc = "";
+ len = 0;
+ }
req->taskSpecificParameters = ext;
ext->direct_reference = req->packageType;
ext->which = Z_External_octet;
ext->u.single_ASN1_type =
- odr_create_Odr_oct(p->odr_out, (const unsigned char *) doc,
- strlen(doc));
+ odr_create_Odr_oct(p->odr_out, (const unsigned char *) doc, len);
return apdu;
}
int num_db;
char **db = set_DatabaseNames(p->connection, p->options, &num_db, p->odr_out);
const char *action = ZOOM_options_get(p->options, "action");
- const char *recordIdOpaque = ZOOM_options_get(p->options, "recordIdOpaque");
+ int recordIdOpaque_len;
+ const char *recordIdOpaque = ZOOM_options_getl(p->options, "recordIdOpaque",
+ &recordIdOpaque_len);
const char *recordIdNumber = ZOOM_options_get(p->options, "recordIdNumber");
- const char *record_buf = ZOOM_options_get(p->options, "record");
+ int record_len;
+ const char *record_buf = ZOOM_options_getl(p->options, "record",
+ &record_len);
const char *syntax_str = ZOOM_options_get(p->options, "syntax");
const char *version = ZOOM_options_get(p->options, "updateVersion");
if (!record_buf)
{
record_buf = "void";
+ record_len = 4;
syntax_str = "SUTRS";
}
notToKeep->elements[0]->u.opaque =
odr_create_Odr_oct(p->odr_out,
(const unsigned char *) recordIdOpaque,
- strlen(recordIdOpaque));
+ recordIdOpaque_len);
}
else if (recordIdNumber)
{
{
Z_IUCorrelationInfo *ci;
ci = notToKeep->elements[0]->correlationInfo =
- odr_malloc(p->odr_out, sizeof(*ci));
+ (Z_IUCorrelationInfo *) odr_malloc(p->odr_out, sizeof(*ci));
ci->note = odr_strdup_null(p->odr_out, correlationInfo_note);
ci->id = correlationInfo_id ?
odr_intdup(p->odr_out, atoi(correlationInfo_id)) : 0;
notToKeep->elements[0]->correlationInfo = 0;
notToKeep->elements[0]->record =
z_ext_record_oid(p->odr_out, syntax_oid,
- record_buf, strlen(record_buf));
+ record_buf, record_len);
}
if (0 && apdu)
{
return ZOOM_options_get(p->options, key);
}
+ZOOM_API(const char *)
+ ZOOM_package_option_getl(ZOOM_package p, const char *key, int *lenp)
+{
+ return ZOOM_options_getl(p->options, key, lenp);
+}
ZOOM_API(void)
ZOOM_package_option_set(ZOOM_package p, const char *key,
ZOOM_options_set(p->options, key, val);
}
+ZOOM_API(void)
+ ZOOM_package_option_setl(ZOOM_package p, const char *key,
+ const char *val, int len)
+{
+ ZOOM_options_setl(p->options, key, val, len);
+}
+
static int ZOOM_connection_exec_task(ZOOM_connection c)
{
ZOOM_task task = c->tasks;