* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.115 2007-04-16 21:53:09 adam Exp $
+ * $Id: seshigh.c,v 1.118 2007-05-06 20:12:20 adam Exp $
*/
/**
* \file seshigh.c
assoc->init->implementation_version = 0;
assoc->init->implementation_id = 0;
assoc->init->implementation_name = 0;
+ assoc->init->query_charset = 0;
+ assoc->init->records_in_same_charset = 0;
assoc->init->bend_sort = NULL;
assoc->init->bend_search = NULL;
assoc->init->bend_present = NULL;
if (sr->username)
{
- Z_IdAuthentication *auth = odr_malloc(assoc->decode, sizeof(*auth));
+ Z_IdAuthentication *auth = (Z_IdAuthentication *)
+ odr_malloc(assoc->decode, sizeof(*auth));
int len;
len = strlen(sr->username) + 1;
if (sr->password)
len += strlen(sr->password) + 2;
auth->which = Z_IdAuthentication_open;
- auth->u.open = odr_malloc(assoc->decode, len);
+ auth->u.open = (char *) odr_malloc(assoc->decode, len);
strcpy(auth->u.open, sr->username);
if (sr->password && *sr->password)
{
else
{
rr->len = wrbuf_len(output_record);
- rr->record = odr_malloc(rr->stream, rr->len);
+ rr->record = (char *) odr_malloc(rr->stream, rr->len);
memcpy(rr->record, wrbuf_buf(output_record), rr->len);
}
wrbuf_destroy(output_record);
if (rr.errstring)
len += strlen(rr.errstring);
- record->recordData_buf = odr_malloc(o, len);
+ record->recordData_buf = (char *) odr_malloc(o, len);
sprintf(record->recordData_buf, "<diagnostic "
"xmlns=\"http://www.loc.gov/zing/srw/diagnostic/\">\n"
static char *srw_bend_explain_default(void *handle, bend_explain_rr *rr)
{
#if YAZ_HAVE_XML2
- xmlNodePtr ptr = rr->server_node_ptr;
+ xmlNodePtr ptr = (xmlNode *) rr->server_node_ptr;
if (!ptr)
return 0;
for (ptr = ptr->children; ptr; ptr = ptr->next)
if (bsrr->num_entries > 0)
{
int i;
- bsrr->entries = odr_malloc(assoc->decode, sizeof(*bsrr->entries) *
- bsrr->num_entries);
+ bsrr->entries = (struct scan_entry *)
+ odr_malloc(assoc->decode, sizeof(*bsrr->entries) *
+ bsrr->num_entries);
for (i = 0; i<bsrr->num_entries; i++)
{
bsrr->entries[i].term = 0;
int srw_error;
bsrr->scanClause = 0;
bsrr->attributeset = 0;
- bsrr->term = odr_malloc(assoc->decode, sizeof(*bsrr->term));
+ bsrr->term = (Z_AttributesPlusTerm *)
+ odr_malloc(assoc->decode, sizeof(*bsrr->term));
srw_error = cql2pqf_scan(assoc->encode,
srw_req->scanClause.cql,
assoc->server->cql_transform,
fseek(inf, 0L, SEEK_END);
*sz = ftell(inf);
rewind(inf);
- buf = odr_malloc(o, *sz);
+ buf = (char *) odr_malloc(o, *sz);
fread(buf, 1, *sz, inf);
fclose(inf);
return buf;
else
{
/* no backend. return error */
- binitres = odr_malloc(assoc->encode, sizeof(*binitres));
+ binitres = (bend_initresult *)
+ odr_malloc(assoc->encode, sizeof(*binitres));
binitres->errstring = 0;
binitres->errcode = YAZ_BIB1_PERMANENT_SYSTEM_ERROR;
iochan_settimeout(assoc->client_chan, 10);
ODR_MASK_SET(resp->options, Z_Options_sort);
strcat(options, " sort");
}
-
- if (ODR_MASK_GET(req->options, Z_Options_negotiationModel)
- && assoc->init->charneg_response)
+
+ if (!assoc->init->charneg_response && !assoc->init->charneg_request)
+ {
+ if (assoc->init->query_charset)
+ {
+ assoc->init->charneg_response = yaz_set_response_charneg(
+ assoc->encode, assoc->init->query_charset, 0,
+ assoc->init->records_in_same_charset);
+ }
+ else
+ {
+ yaz_log(YLOG_WARN, "default query_charset not defined by backend");
+ }
+ }
+ if (assoc->init->charneg_response
+ && ODR_MASK_GET(req->options, Z_Options_negotiationModel))
{
Z_OtherInformation **p;
Z_OtherInformationUnit *p0;
ODR_MASK_SET(resp->options, Z_Options_negotiationModel);
strcat(options, " negotiation");
}
-
if (ODR_MASK_GET(req->options, Z_Options_triggerResourceCtrl))
ODR_MASK_SET(resp->options, Z_Options_triggerResourceCtrl);
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
- version = odr_strdup(assoc->encode, "$Revision: 1.115 $");
+ version = odr_strdup(assoc->encode, "$Revision: 1.118 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
if (bsrr->num_entries > 0)
{
int i;
- bsrr->entries = odr_malloc(assoc->decode, sizeof(*bsrr->entries) *
- bsrr->num_entries);
+ bsrr->entries = (struct scan_entry *)
+ odr_malloc(assoc->decode, sizeof(*bsrr->entries) *
+ bsrr->num_entries);
for (i = 0; i<bsrr->num_entries; i++)
{
bsrr->entries[i].term = 0;