#include <yaz/yaz-util.h>
#include <yaz/pquery.h>
#include <yaz/oid_db.h>
-
+#include <yaz/query-charset.h>
#include <yaz/srw.h>
#include <yaz/backend.h>
#include <yaz/yaz-ccl.h>
if (sr->which == Z_SRW_searchRetrieve_request)
{
Z_SRW_PDU *res =
- yaz_srw_get_pdu(assoc->encode, Z_SRW_searchRetrieve_response,
- sr->srw_version);
+ yaz_srw_get_pdu_e(assoc->encode, Z_SRW_searchRetrieve_response,
+ sr);
stylesheet = sr->u.request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_explain_request)
{
- Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_explain_response,
- sr->srw_version);
+ Z_SRW_PDU *res = yaz_srw_get_pdu_e(o, Z_SRW_explain_response, sr);
stylesheet = sr->u.explain_request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_scan_request)
{
- Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_scan_response,
- sr->srw_version);
+ Z_SRW_PDU *res = yaz_srw_get_pdu_e(o, Z_SRW_scan_response, sr);
stylesheet = sr->u.scan_request->stylesheet;
if (num_diagnostic)
{
Z_ReferenceId *referenceId,
Odr_oid *oid, int *errcode)
{
- int recno, total_length = 0, dumped_records = 0;
+ int recno;
+ Odr_int dumped_records = 0;
int toget = odr_int_to_int(*num);
Z_Records *records =
(Z_Records *) odr_malloc(a->encode, sizeof(*records));
{
bend_fetch_rr freq;
Z_NamePlusRecord *thisrec;
- int this_length = 0;
+ Odr_int this_length = 0;
/*
* we get the number of bytes allocated on the stream before any
* allocation done by the backend - this should give us a reasonable
* idea of the total size of the data so far.
*/
- total_length = odr_total(a->encode) - dumped_records;
+ Odr_int total_length = odr_total(a->encode) - dumped_records;
freq.errcode = 0;
freq.errstring = 0;
freq.basename = 0;
this_length = freq.len;
else
this_length = odr_total(a->encode) - total_length - dumped_records;
- yaz_log(YLOG_DEBUG, " fetched record, len=%d, total=%d dumped=%d",
- this_length, total_length, dumped_records);
+ yaz_log(log_requestdetail, " fetched record, len=" ODR_INT_PRINTF
+ " total=" ODR_INT_PRINTF " dumped=" ODR_INT_PRINTF,
+ this_length, total_length, dumped_records);
if (a->preferredMessageSize > 0 &&
- this_length + total_length > a->preferredMessageSize)
+ this_length + total_length > a->preferredMessageSize)
{
/* record is small enough, really */
if (this_length <= a->preferredMessageSize && recno > start)
else /* too big entirely */
{
yaz_log(log_requestdetail, "Record > maxrcdsz "
- "this=%d max=%d",
+ "this=" ODR_INT_PRINTF " max=%d",
this_length, a->maximumRecordSize);
reclist->records[reclist->num_records] =
surrogatediagrec(
bsrr->search_input = req->otherInfo;
bsrr->present_number = *req->mediumSetPresentNumber;
+ if (assoc->server && assoc->server->client_query_charset &&
+ req->query->which == Z_Query_type_1)
+ {
+ yaz_iconv_t cd =
+ yaz_iconv_open("UTF-8", assoc->server->client_query_charset);
+ if (cd)
+ {
+ yaz_query_charset_convert_rpnquery(req->query->u.type_1,
+ assoc->decode, cd);
+ yaz_iconv_close(cd);
+ }
+ }
+
if (assoc->server && assoc->server->cql_transform
&& req->query->which == Z_Query_type_104
&& req->query->u.type_104->which == Z_External_CQL)