- bprr->stream = assoc->encode;
- bprr->referenceId = 0;
- bprr->print = assoc->print;
- bprr->request = req;
- bprr->association = assoc;
- bprr->errcode = 0;
- bprr->errstring = NULL;
- (*assoc->init->bend_present)(assoc->backend, bprr);
-
- if (!bprr->request)
- return;
- if (bprr->errcode)
+ }
+ else
+ {
+ bprr->comp = 0;
+ }
+ bprr->stream = assoc->encode;
+ bprr->referenceId = 0;
+ bprr->print = assoc->print;
+ bprr->association = assoc;
+ bprr->errcode = 0;
+ bprr->errstring = NULL;
+ (*assoc->init->bend_present)(assoc->backend, bprr);
+
+ if (bprr->errcode)
+ {
+ srw_error = yaz_diag_bib1_to_srw(bprr->errcode);
+ yaz_add_srw_diagnostic(assoc->encode,
+ &srw_res->diagnostics,
+ &srw_res->num_diagnostics,
+ srw_error, bprr->errstring);
+ ok = 0;
+ }
+ }
+
+ if (ok)
+ {
+ int j = 0;
+ int packing = Z_SRW_recordPacking_string;
+ if (srw_req->recordPacking)
+ {
+ packing =
+ yaz_srw_str_to_pack(srw_req->recordPacking);
+ if (packing == -1)
+ packing = Z_SRW_recordPacking_string;
+ }
+ srw_res->records = (Z_SRW_record *)
+ odr_malloc(assoc->encode,
+ number * sizeof(*srw_res->records));
+
+ srw_res->extra_records = (Z_SRW_extra_record **)
+ odr_malloc(assoc->encode,
+ number*sizeof(*srw_res->extra_records));
+
+ for (i = 0; i<number; i++)
+ {
+ int errcode;
+ int last_in_set = 0;
+ const char *addinfo = 0;
+
+ srw_res->records[j].recordPacking = packing;
+ srw_res->records[j].recordData_buf = 0;
+ srw_res->extra_records[j] = 0;
+ yaz_log(YLOG_DEBUG, "srw_bend_fetch %d", i+start);
+ errcode = srw_bend_fetch(assoc, i+start, srw_req,
+ srw_res->records + j,
+ &addinfo, &last_in_set);
+ if (errcode)