Minor changes.
[ir-tcl-moved-to-github.git] / ir-tcl.c
index 9d910c9..43f9963 100644 (file)
--- a/ir-tcl.c
+++ b/ir-tcl.c
@@ -5,7 +5,13 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: ir-tcl.c,v $
- * Revision 1.52  1995-08-04 11:32:38  adam
+ * Revision 1.54  1995-08-24 12:25:16  adam
+ * Modified to work with yaz 1.0b3.
+ *
+ * Revision 1.53  1995/08/04  12:49:26  adam
+ * Bug fix: reading uninitialized variable p.
+ *
+ * Revision 1.52  1995/08/04  11:32:38  adam
  * More work on output queue. Memory related routines moved
  * to mem.c
  *
@@ -484,7 +490,7 @@ static int do_init_request (void *obj, Tcl_Interp *interp,
         return TCL_OK;
     if (!p->cs_link)
     {
-        interp->result = "not connected";
+        interp->result = "init: not connected";
         return TCL_ERROR;
     }
     apdu = zget_APDU (p->odr_out, Z_APDU_initRequest);
@@ -1134,7 +1140,7 @@ static int do_triggerResourceControl (void *obj, Tcl_Interp *interp,
         return TCL_OK;
     if (!p->cs_link)
     {
-        interp->result = "not connected";
+        interp->result = "triggerResourceControl: not connected";
         return TCL_ERROR;
     }
     apdu = zget_APDU (p->odr_out, Z_APDU_triggerResourceControlRequest);
@@ -1524,7 +1530,7 @@ static int do_search (void *o, Tcl_Interp *interp, int argc, char **argv)
     }
     if (!p->cs_link)
     {
-        interp->result = "not connected";
+        interp->result = "search: not connected";
         return TCL_ERROR;
     }
     apdu = zget_APDU (p->odr_out, Z_APDU_searchRequest);
@@ -1964,8 +1970,7 @@ static int do_responseStatus (void *o, Tcl_Interp *interp,
  * do_present: Perform Present Request
  */
 
-static int do_present (void *o, Tcl_Interp *interp,
-                       int argc, char **argv)
+static int do_present (void *o, Tcl_Interp *interp, int argc, char **argv)
 {
     IrTcl_SetObj *obj = o;
     IrTcl_Obj *p;
@@ -1990,12 +1995,12 @@ static int do_present (void *o, Tcl_Interp *interp,
     }
     else 
         number = 10;
+    p = obj->parent;
     if (!p->cs_link)
     {
-        interp->result = "not connected";
+        interp->result = "present: not connected";
         return TCL_ERROR;
     }
-    p = obj->parent;
 
     obj->start = start;
     obj->number = number;
@@ -2239,7 +2244,7 @@ static int do_scan (void *o, Tcl_Interp *interp, int argc, char **argv)
     }
     if (!p->cs_link)
     {
-        interp->result = "not connected";
+        interp->result = "scan: not connected";
        return TCL_ERROR;
     }
 
@@ -2630,12 +2635,12 @@ static void ir_handleRecords (void *o, Z_Records *zrs, IrTcl_SetObj *setobj)
             else
             {
                 Z_DatabaseRecord *zr; 
-                Odr_external *oe;
+                Z_External *oe;
                 struct oident *ident;
                 
                 zr = zrs->u.databaseOrSurDiagnostics->records[offset]
                     ->u.databaseRecord;
-                oe = (Odr_external*) zr;
+                oe = (Z_External*) zr;
                rl->u.dbrec.size = zr->u.octet_aligned->len;
 
                 rl->u.dbrec.type = VAL_USMARC;
@@ -2648,27 +2653,17 @@ static void ir_handleRecords (void *o, Z_Records *zrs, IrTcl_SetObj *setobj)
                        memcpy (rl->u.dbrec.buf, buf, rl->u.dbrec.size);
                 }
                 else if (rl->u.dbrec.type == VAL_SUTRS && 
-                         oe->which == ODR_EXTERNAL_single)
+                         oe->which == Z_External_sutrs)
                 {
-                    Odr_oct *rc;
-                    
-                    logf (LOG_DEBUG, "Decoding SUTRS");
                     odr_setbuf (p->odr_in, (char*) oe->u.single_ASN1_type->buf,
                                 oe->u.single_ASN1_type->len, 0);
-                    if (!z_SUTRS(p->odr_in, &rc, 0))
-                    {
-                        logf (LOG_WARN, "Cannot decode SUTRS");
-                        rl->u.dbrec.buf = NULL;
-                    }
-                    else 
+                    if ((rl->u.dbrec.buf = ir_tcl_malloc (oe->u.sutrs->len+1)))
                     {
-                        if ((rl->u.dbrec.buf = ir_tcl_malloc (rc->len+1)))
-                        {
-                            memcpy (rl->u.dbrec.buf, rc->buf, rc->len);
-                            rl->u.dbrec.buf[rc->len] = '\0';
-                        }
-                        rl->u.dbrec.size = rc->len;
+                        memcpy (rl->u.dbrec.buf, oe->u.sutrs->buf,
+                                oe->u.sutrs->len);
+                        rl->u.dbrec.buf[oe->u.sutrs->len] = '\0';
                     }
+                    rl->u.dbrec.size = oe->u.sutrs->len;
                 }
                 else
                     rl->u.dbrec.buf = NULL;