/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2008 Index Data
+ * Copyright (C) 1995-2009 Index Data
* See the file LICENSE for details.
*/
/**
Z_InitRequest *ireq = apdu->u.initRequest;
Z_IdAuthentication *auth = (Z_IdAuthentication *)
odr_malloc(c->odr_out, sizeof(*auth));
- char *version;
ODR_MASK_SET(ireq->options, Z_Options_search);
ODR_MASK_SET(ireq->options, Z_Options_present);
ODR_MASK_SET(ireq->protocolVersion, Z_ProtocolVersion_2);
ODR_MASK_SET(ireq->protocolVersion, Z_ProtocolVersion_3);
- /* Index Data's Z39.50 Implementor Id is 81 */
ireq->implementationId =
odr_prepend(c->odr_out,
ZOOM_options_get(c->options, "implementationId"),
- odr_prepend(c->odr_out, "81", ireq->implementationId));
+ ireq->implementationId);
ireq->implementationName =
odr_prepend(c->odr_out,
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- 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 =
odr_prepend(c->odr_out,
ZOOM_options_get(c->options, "implementationVersion"),
- odr_prepend(c->odr_out, &version[11],
- ireq->implementationVersion));
+ ireq->implementationVersion);
*ireq->maximumRecordSize = c->maximum_record_size;
*ireq->preferredMessageSize = c->preferred_message_size;
charset);
else if (r->which == Z_External_octet)
{
- int marc_decode_type = YAZ_MARC_MARCXML;
if (yaz_oid_is_iso2709(oid))
{
const char *ret_buf = marc_iconv_return(
- rec, marc_decode_type, len,
+ rec, YAZ_MARC_MARCXML, len,
(const char *) r->u.octet_aligned->buf,
r->u.octet_aligned->len,
charset);
else if (!strcmp(type, "raw"))
{
Z_External *r = (Z_External *) npr->u.databaseRecord;
+ const Odr_oid *oid = r->direct_reference;
if (r->which == Z_External_sutrs)
{
- if (len) *len = r->u.sutrs->len;
- return (const char *) r->u.sutrs->buf;
+ return record_iconv_return(rec, len,
+ (const char *) r->u.sutrs->buf,
+ r->u.sutrs->len,
+ charset);
}
else if (r->which == Z_External_octet)
{
- if (len) *len = r->u.octet_aligned->len;
- return (const char *) r->u.octet_aligned->buf;
+ if (yaz_oid_is_iso2709(oid) && *charset)
+ {
+ const char *ret_buf = marc_iconv_return(
+ rec, YAZ_MARC_ISO2709, len,
+ (const char *) r->u.octet_aligned->buf,
+ r->u.octet_aligned->len,
+ charset);
+ return ret_buf;
+ }
+ return record_iconv_return(rec, len,
+ (const char *) r->u.octet_aligned->buf,
+ r->u.octet_aligned->len,
+ charset);
}
else /* grs-1, explain, OPAC, ... */
{
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab