X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zutil%2Fzoom-c.c;h=995b26373687bbe6b5589de84e1d1da496ef49ca;hb=e74dfc354e4695e5238bc77f39c879e1d9fc6f20;hp=e94a9a9fcd3f886bb61f1ab956c1dc463ea940a1;hpb=72d53a9d929783e997c41330bb28859018088b53;p=yaz-moved-to-github.git diff --git a/zutil/zoom-c.c b/zutil/zoom-c.c index e94a9a9..995b263 100644 --- a/zutil/zoom-c.c +++ b/zutil/zoom-c.c @@ -1,5 +1,5 @@ /* - * $Id: zoom-c.c,v 1.4 2002-10-04 11:23:50 adam Exp $ + * $Id: zoom-c.c,v 1.7 2002-11-15 10:38:37 adam Exp $ * * ZOOM layer for C, connections, result sets, queries. */ @@ -1054,18 +1054,19 @@ ZOOM_record_get (ZOOM_record rec, const char *type, int *len) } 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) @@ -1108,8 +1109,13 @@ ZOOM_record_get (ZOOM_record rec, const char *type, int *len) } 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; } @@ -2177,7 +2183,6 @@ static zoom_ret do_write_ex (ZOOM_connection c, char *buf_out, int len_out) } else { - // c->reconnect_ok = 0; c->mask = ZOOM_SELECT_READ|ZOOM_SELECT_EXCEPT; yaz_log (LOG_DEBUG, "do_write_ex 2 mask=%d", c->mask); }