/*
- * $Id: zoom-c.c,v 1.2 2002-09-24 08:05:42 adam Exp $
+ * $Id: zoom-c.c,v 1.6 2002-10-28 10:53:09 adam Exp $
*
* ZOOM layer for C, connections, result sets, queries.
*/
}
else if (!strcmp (type, "syntax"))
{
+ const char *desc = 0;
if (npr->which == Z_NamePlusRecord_databaseRecord)
{
Z_External *r = (Z_External *) npr->u.databaseRecord;
oident *ent = oid_getentbyoid(r->direct_reference);
if (ent)
- {
- if (len)
- *len = strlen(ent->desc);
- return ent->desc;
- }
+ desc = ent->desc;
}
- return "none";
+ if (!desc)
+ desc = "none";
+ if (len)
+ *len = strlen(desc);
+ return desc;
}
else if (!strcmp (type, "render") &&
npr->which == Z_NamePlusRecord_databaseRecord)
}
else if (r->which == Z_External_grs1)
{
- if (len) *len = 5;
- return "GRS-1";
+ if (!rec->wrbuf_marc)
+ rec->wrbuf_marc = wrbuf_alloc();
+ wrbuf_rewind (rec->wrbuf_marc);
+ yaz_display_grs1(rec->wrbuf_marc, r->u.grs1, 0);
+ if (len)
+ *len = wrbuf_len(rec->wrbuf_marc);
+ return wrbuf_buf(rec->wrbuf_marc);
}
return 0;
}
r->u.octet_aligned->buf,
rec->wrbuf_marc, 0,
r->u.octet_aligned->len,
- 1) > 0)
+ 2) > 0)
{
if (len) *len = wrbuf_len(rec->wrbuf_marc);
return wrbuf_buf(rec->wrbuf_marc);
int sel;
yaz_get_response_charneg(tmpmem, p, &charset, &lang, &sel);
- yaz_log(LOG_DEBUG, "Target accepted: charset - %s,"
- "language - %s, select - %d",
- charset, lang, sel);
-
+ yaz_log(LOG_DEBUG, "Target accepted: charset %s, "
+ "language %s, select %d",
+ charset ? charset : "none", lang ? lang : "none", sel);
+ if (charset)
+ ZOOM_connection_option_set (c, "negotiation-charset",
+ charset);
+ if (lang)
+ ZOOM_connection_option_set (c, "negotiation-lang",
+ lang);
nmem_destroy(tmpmem);
}
}