- thisrec->u.databaseRecord = z_ext_record(a->encode, freq.output_format,
- freq.record, freq.len);
- if (!thisrec->u.databaseRecord)
- return 0;
- reclist->records[reclist->num_records] = thisrec;
- reclist->num_records++;
- *next = freq.last_in_set ? 0 : recno + 1;
- }
- *num = reclist->num_records;
- return records;
-#endif
- return 0;
-}
-
-void Yaz_Z_Server::piggyback (Z_SearchRequest *req,
- Z_SearchResponse *res)
-{
- bool_t *sr = (bool_t *)odr_malloc (odr_encode(), sizeof(*sr));
- *sr = 1;
-
- int *next = (int *)odr_malloc (odr_encode(), sizeof(*next));
- *next = 0;
-
- int *toget = (int *)odr_malloc (odr_encode(), sizeof(*toget));
- *toget = 0;
-
- int *presst = (int *)odr_malloc (odr_encode(), sizeof(*presst));
- *presst = 0;
-
- Z_RecordComposition comp, *compp = 0;
- int hits = *res->resultCount;
-
- int *nulint = (int *)odr_malloc (odr_encode(), sizeof(*nulint));
- *nulint = 0;
-
- res->records = 0;
-
- comp.which = Z_RecordComp_simple;
- /* how many records does the user agent want, then? */
- if (hits <= *req->smallSetUpperBound)
- {
- *toget = hits;
- if ((comp.u.simple = req->smallSetElementSetNames))
- compp = ∁
- }
- else if (hits < *req->largeSetLowerBound)
- {
- *toget = *req->mediumSetPresentNumber;
- if (*toget > hits)
- *toget = hits;
- if ((comp.u.simple = req->mediumSetElementSetNames))
- compp = ∁
- }
- else
- *toget = 0;
-
- if (*toget && !res->records)
- {
- res->records =
- pack_records(req->resultSetName, 1,
- toget, compp, next, presst,
- req->preferredRecordSyntax);
- if (!res->records)
- return;
- res->numberOfRecordsReturned = toget;
- res->nextResultSetPosition = next;
- res->searchStatus = sr;
- res->resultSetStatus = 0;
- res->presentStatus = presst;