X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=inline;f=src%2Ffilter_record_transform.cpp;h=5de0f350f8ba0455a8f39e4af9b34bd80532c603;hb=04b73acd94679a3230324eec3ece7a1e4138d8fe;hp=47467e5392054454c5383e924a2731bb09740130;hpb=a911db8ff225da3d204c6e9371353895225ae231;p=metaproxy-moved-to-github.git diff --git a/src/filter_record_transform.cpp b/src/filter_record_transform.cpp index 47467e5..5de0f35 100644 --- a/src/filter_record_transform.cpp +++ b/src/filter_record_transform.cpp @@ -1,5 +1,5 @@ -/* $Id: filter_record_transform.cpp,v 1.7 2006-12-12 11:01:40 marc Exp $ - Copyright (c) 2005-2006, Index Data. +/* $Id: filter_record_transform.cpp,v 1.11 2007-05-09 07:14:28 adam Exp $ + Copyright (c) 2005-2007, Index Data. See the LICENSE file for details */ @@ -141,7 +141,7 @@ void yf::RecordTransform::Impl::process(mp::Package &package) const } const char *match_schema = 0; - int *match_syntax = 0; + Odr_oid *match_syntax = 0; const char *backend_schema = 0; Odr_oid *backend_syntax = 0; @@ -178,7 +178,7 @@ void yf::RecordTransform::Impl::process(mp::Package &package) const else if (ret_code == 2) { char oidbuf[OID_STR_MAX]; - oid_to_dotstring(input_syntax, oidbuf); + oid_oid_to_dotstring(input_syntax, oidbuf); details = odr_strdup(odr_en, oidbuf); apdu = odr_en.create_presentResponse( @@ -189,16 +189,12 @@ void yf::RecordTransform::Impl::process(mp::Package &package) const return; } - - // now re-coding the z3950 backend present request - // z3950'fy record syntax - if (backend_syntax) // TODO: this seems not to work - why ?? - pr_req->preferredRecordSyntax = backend_syntax; + if (backend_syntax) + pr_req->preferredRecordSyntax = odr_oiddup(odr_en, backend_syntax); else - pr_req->preferredRecordSyntax - = yaz_oidval_to_z3950oid(odr_en, CLASS_RECSYN, VAL_NONE); + pr_req->preferredRecordSyntax = 0; // z3950'fy record schema @@ -284,9 +280,8 @@ void yf::RecordTransform::Impl::process(mp::Package &package) const output_record); if (ret_trans == 0) { - struct oident *ident = oid_getentbyoid(match_syntax); npr->u.databaseRecord = - z_ext_record(odr_en, ident->value, + z_ext_record_oid(odr_en, match_syntax, wrbuf_buf(output_record), wrbuf_len(output_record)); } @@ -299,7 +294,7 @@ void yf::RecordTransform::Impl::process(mp::Package &package) const YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS, yaz_record_conv_get_error(rc)); } - wrbuf_free(output_record, 1); + wrbuf_destroy(output_record); } } }