- 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));