/*
* Europagate, 1995
*
+ * Z39.50 API for the Email gateway
+ *
* $Log: zaccess.c,v $
- * Revision 1.9 1995/02/17 15:17:51 quinn
+ * Revision 1.15 1995/04/17 11:26:55 quinn
+ * Added YAZ version of zaccess
+ *
+ * Revision 1.14 1995/02/23 08:32:26 adam
+ * Changed header.
+ *
+ * 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
PINITREQUEST ireq;
PINITRESPONSE ires;
int len;
+ char name[512];
if (!(p = malloc(sizeof(*p))))
{
}
gw_log(ZASS_DEBUG, ZASS_TYPE, "Opened connection to %s:%d", p->ass->HostName,
p->ass->Port);
+ sprintf(name, "%s (ZDIST protocol layer)", ZASS_NAME);
ireq = InitRequest_CreateInitAllASCII(0, "yy", "yy", p->maxrecordsize,
- p->preferredmessagesize, ZASS_ID, ZASS_NAME, ZASS_VERSION, 0);
+ p->preferredmessagesize, ZASS_ID, name, ZASS_VERSION, 0);
if (!ireq)
{
gw_log(GW_LOG_FATAL, "ZASS_TYPE", "failed to create initrequest");
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)))
{
}
gw_log(ZASS_DEBUG, ZASS_TYPE, "Got presentresponse");
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;
- r.num;
switch(PresentResponse_GetRecordType(pdu))
{
case RESPONSERECORDS_TAG:
}
PresentResponse_Destroy(pdu);
}
- while (num - r.num);
+ while (num - r.num && start);
*rec = 0;
return &r;