X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zoom%2Fzoomsh.c;h=20894e0aa45aec026f5537413cf90e76057c97fe;hb=79c6d1159a62591c6fe14452fd09a3bd7394344f;hp=5f64c040da815a9d442ad3ea77669a1119f0ef5d;hpb=c12f2351ad72e5e4788f30684de0d98e5bc0dc1e;p=yaz-moved-to-github.git diff --git a/zoom/zoomsh.c b/zoom/zoomsh.c index 5f64c04..20894e0 100644 --- a/zoom/zoomsh.c +++ b/zoom/zoomsh.c @@ -1,5 +1,5 @@ /* - * $Id: zoomsh.c,v 1.21 2003-07-09 23:00:21 mike Exp $ + * $Id: zoomsh.c,v 1.24 2003-11-25 23:19:59 adam Exp $ * * ZOOM-C Shell */ @@ -143,35 +143,6 @@ static void cmd_close (ZOOM_connection *c, ZOOM_resultset *r, } } -static const char *oid_name_to_dotstring(const char *name) { - struct oident ent; - int oid[OID_SIZE]; - static char oidbuf[100]; /* ### bad interface */ - int i; - - /* Translate syntax to oid_val */ - oid_value value = oid_getvalbyname(name); - - /* Build it into an oident */ - ent.proto = PROTO_Z3950; - ent.oclass = CLASS_RECSYN; - ent.value = value; - - /* Translate to an array of int */ - (void) oid_ent_to_oid(&ent, oid); - - /* Write the array of int into a dotted string (phew!) */ - oidbuf[0] = '\0'; - for (i = 0; oid[i] != -1; i++) { - char tmpbuf[20]; - sprintf(tmpbuf, "%d", oid[i]); - if (i > 0) strcat(oidbuf, "."); - strcat(oidbuf, tmpbuf); - } - - return oidbuf; -} - static void display_records (ZOOM_connection c, ZOOM_resultset r, int start, int count) @@ -182,19 +153,24 @@ static void display_records (ZOOM_connection c, int pos = i + start; ZOOM_record rec = ZOOM_resultset_record (r, pos); const char *db = ZOOM_record_get (rec, "database", 0); - int len; + int len, opac_len; const char *render = ZOOM_record_get (rec, "render", &len); + const char *opac_render = ZOOM_record_get (rec, "opac", &opac_len); const char *syntax = ZOOM_record_get (rec, "syntax", 0); /* if rec is non-null, we got a record for display */ if (rec) { - const char *syntax_oid = oid_name_to_dotstring(syntax); + char oidbuf[100]; + (void) oid_name_to_dotstring(CLASS_RECSYN, syntax, oidbuf); printf ("%d %s %s (%s)\n", - pos+1, (db ? db : "unknown"), syntax, syntax_oid); + pos+1, (db ? db : "unknown"), syntax, oidbuf); if (render) fwrite (render, 1, len, stdout); printf ("\n"); + if (opac_render) + fwrite (opac_render, 1, opac_len, stdout); } + } } @@ -244,15 +220,19 @@ static void cmd_ext (ZOOM_connection *c, ZOOM_resultset *r, const char **args) { ZOOM_package p[MAX_CON]; + char ext_type_str[10]; int i; + + if (next_token_copy (args, ext_type_str, sizeof(ext_type_str)) < 0) + return; for (i = 0; i