/*
* Europagate, 1995
*
- * $Log: zaccess.c,v $
- * Revision 1.7 1995/02/17 14:42:21 quinn
+ * zaccess.c,v
+ * Revision 1.12 1995/02/20 20:35:37 quinn
+ * Pull present status from presresp.
+ *
+ * Revision 1.11 1995/02/20 18:58:05 quinn
+ * Added hack for record in ANY
+ *
+ * Revision 1.10 1995/02/20 18:19:30 quinn
+ * More relaxed about record types.
+ *
+ * Revision 1.9 1995/02/17 15:17:51 quinn
+ * Bug fix
+ *
+ * Revision 1.8 1995/02/17 14:48:41 quinn
+ * 'nother bug in present
+ *
+ * Revision 1.7 1995/02/17 14:42:21 quinn
* Trivial bug in fetch-loop.
*
* Revision 1.6 1995/02/17 14:41:22 quinn
else
{
gw_log(GW_LOG_WARN, ZASS_TYPE, "ZLAYER only knows USMARC at this point.");
- return;
+ gw_log(GW_LOG_WARN, ZASS_TYPE, "Type was '%d'", (**p)->which);
}
align = External_GetEncodingAligned(ext);
if (!align)
{
- gw_log(GW_LOG_WARN, ZASS_TYPE, "AAAARRRGH!! Enough of these log-messages!!!");
- return;
+ gw_log(GW_LOG_WARN, ZASS_TYPE, "Record wasn't octet-aligned");
+ align = External_GetEncodingSingle(ext);
+ if (!align)
+ {
+ gw_log(GW_LOG_WARN, ZASS_TYPE, "Record wasn't ANY");
+ return;
+ }
+ align = align->ptr.child;
}
if (!((**p)->record = malloc(align->count + 1)))
{
}
do
{
- gw_log(ZASS_DEBUG, ZASS_TYPE, "Fetching %d records from # %d", num,
+ gw_log(ZASS_DEBUG, ZASS_TYPE, "Fetching %d records from # %d", num - r.num,
start);
- pdu = PresentRequest_CreateInitAllASCII(0, resname, start, num, "F",
+ pdu = PresentRequest_CreateInitAllASCII(0, resname, start, num - r.num, "F",
USMARC_OID);
if (!pdu)
{
return 0;
}
gw_log(ZASS_DEBUG, ZASS_TYPE, "Got presentresponse");
- r.num = PresentResponse_GetNumberOfRecordsReturned(pdu);
+ r.num += PresentResponse_GetNumberOfRecordsReturned(pdu);
+ r.presentstatus = PresentResponse_GetPresentStatus(pdu);
if (r.num == 0)
{
gw_log(GW_LOG_WARN, ZASS_TYPE, "Got 0 records from target.");
}
r.nextpos = PresentResponse_GetNextResultSetPosition(pdu);
start = r.nextpos;
- num -= r.num;
switch(PresentResponse_GetRecordType(pdu))
{
case RESPONSERECORDS_TAG:
default:
gw_log(GW_LOG_WARN, ZASS_TYPE, "Bad tag in response rec.");
}
- *rec = 0;
PresentResponse_Destroy(pdu);
}
- while (num);
+ while (num - r.num);
+ *rec = 0;
return &r;
}