X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_sru_to_z3950.cpp;h=96c820bc4ee005c7db6757a3c440617ebbd60094;hb=b8ace6ad3194aacf3cbe21a135e8c331020ede89;hp=fea86c1f3ea1e0fac253069aa7a56d41fa9ad69c;hpb=9a946dbfe1c3d52837c25b45a59fea8ff6ff39d5;p=metaproxy-moved-to-github.git diff --git a/src/filter_sru_to_z3950.cpp b/src/filter_sru_to_z3950.cpp index fea86c1..96c820b 100644 --- a/src/filter_sru_to_z3950.cpp +++ b/src/filter_sru_to_z3950.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2009 Index Data + Copyright (C) 2005-2010 Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -20,9 +20,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define NOMINMAX 1 #include "config.hpp" -#include "filter.hpp" -#include "package.hpp" -#include "util.hpp" +#include +#include #include "gduutil.hpp" #include "sru_util.hpp" #include "filter_sru_to_z3950.hpp" @@ -40,7 +39,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include -#include +/* #include */ #include namespace mp = metaproxy_1; @@ -182,13 +181,6 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req) { explainnode = idbexp->second; } - // just moving package if database is not known - else - { - package.move(); - return; - } - // decode SRU request Z_SOAP *soap = 0; @@ -538,8 +530,7 @@ bool yf::SRUtoZ3950::Impl::z3950_search_request(mp::Package &package, // Finally, roll on and srw'fy number of records sru_pdu_res->u.response->numberOfRecords - = (int *) odr_malloc(odr_en, sizeof(int *)); - *(sru_pdu_res->u.response->numberOfRecords) = *(sr->resultCount); + = odr_intdup(odr_en, *sr->resultCount); // srw'fy nextRecordPosition //sru_pdu_res->u.response->nextRecordPosition @@ -643,10 +634,12 @@ yf::SRUtoZ3950::Impl::z3950_present_request(mp::Package &package, // z3950'fy number of records requested // protect against requesting records out of range - *apdu->u.presentRequest->numberOfRecordsRequested - = std::min(max_recs, - *sru_pdu_res->u.response->numberOfRecords - start + 1); - + if (max_recs < *sru_pdu_res->u.response->numberOfRecords - start + 1) + *apdu->u.presentRequest->numberOfRecordsRequested = max_recs; + else + *apdu->u.presentRequest->numberOfRecordsRequested = + *sru_pdu_res->u.response->numberOfRecords - start + 1; + // z3950'fy recordPacking int record_packing = Z_SRW_recordPacking_XML; if (sr_req->recordPacking && 's' == *(sr_req->recordPacking))