* Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.1 2003-10-27 12:21:35 adam Exp $
+ * $Id: seshigh.c,v 1.4 2003-12-04 11:48:06 adam Exp $
*/
/*
Z_APDU *apdu = zget_APDU(assoc->encode, Z_APDU_initResponse);
Z_InitResponse *resp = apdu->u.initResponse;
bend_initresult *binitres;
-
+ char *version;
char options[140];
yaz_log(LOG_LOG, "Got initRequest");
resp->preferredMessageSize = &assoc->preferredMessageSize;
resp->maximumRecordSize = &assoc->maximumRecordSize;
- resp->implementationName = "GFS/YAZ";
+ resp->implementationId = odr_prepend(assoc->encode,
+ assoc->init->implementation_id,
+ resp->implementationId);
- if (assoc->init->implementation_id)
- {
- char *nv = (char *)
- odr_malloc (assoc->encode,
- strlen(assoc->init->implementation_id) + 10 +
- strlen(resp->implementationId));
- sprintf (nv, "%s / %s",
- resp->implementationId, assoc->init->implementation_id);
- resp->implementationId = nv;
- }
- if (assoc->init->implementation_name)
- {
- char *nv = (char *)
- odr_malloc (assoc->encode,
- strlen(assoc->init->implementation_name) + 10 +
- strlen(resp->implementationName));
- sprintf (nv, "%s / %s",
- resp->implementationName, assoc->init->implementation_name);
- resp->implementationName = nv;
- }
- if (assoc->init->implementation_version)
- {
- char *nv = (char *)
- odr_malloc (assoc->encode,
- strlen(assoc->init->implementation_version) + 10 +
- strlen(resp->implementationVersion));
- sprintf (nv, "YAZ %s / %s",
- resp->implementationVersion,
- assoc->init->implementation_version);
- resp->implementationVersion = nv;
- }
+ resp->implementationName = odr_prepend(assoc->encode,
+ assoc->init->implementation_name,
+ odr_prepend(assoc->encode, "GFS", resp->implementationName));
+
+ version = odr_strdup(assoc->encode, "$Revision: 1.4 $");
+ if (strlen(version) > 10) /* check for unexpanded CVS strings */
+ version[strlen(version)-2] = '\0';
+ resp->implementationVersion = odr_prepend(assoc->encode,
+ assoc->init->implementation_version,
+ odr_prepend(assoc->encode, &version[11],
+ resp->implementationVersion));
if (binitres->errcode)
{
bsrr->basenames = req->databaseNames;
bsrr->query = req->query;
bsrr->stream = assoc->encode;
+ nmem_transfer(bsrr->stream->mem, reqb->request_mem);
bsrr->decode = assoc->decode;
bsrr->print = assoc->print;
bsrr->errcode = 0;