Allow command to send extended service package
[yaz-moved-to-github.git] / zoom / zoomsh.c
index 5f64c04..20894e0 100644 (file)
@@ -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<MAX_CON; i++)
     {
        if (c[i])
         {
             p[i] = ZOOM_connection_package (c[i], 0);
-            ZOOM_package_send(p[i], "itemorder");
+            ZOOM_package_send(p[i], ext_type_str);
         }
         else
             p[i] = 0;