Update.
[ir-tcl-moved-to-github.git] / ir-tcl.c
index 591914d..0784461 100644 (file)
--- a/ir-tcl.c
+++ b/ir-tcl.c
@@ -5,7 +5,19 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: ir-tcl.c,v $
- * Revision 1.106  1998-05-20 12:25:35  adam
+ * Revision 1.110  1998-10-20 15:15:31  adam
+ * Changed scan response handler.
+ *
+ * Revision 1.109  1998/10/13 21:23:26  adam
+ * Fixed searchStatus method.
+ *
+ * Revision 1.108  1998/10/12 11:48:08  adam
+ * Removed printf call.
+ *
+ * Revision 1.107  1998/06/10 13:00:46  adam
+ * Added ir-version command.
+ *
+ * Revision 1.106  1998/05/20 12:25:35  adam
  * Fixed bug that occurred in rare cases when encoding of incoming
  * records failed.
  *
@@ -657,13 +669,14 @@ int ir_tcl_named_bits (struct ir_named_entry *tab, Odr_bitmask *ob,
         ODR_MASK_ZERO (ob);
         for (no = 0; no < argc; no++)
         {
+           int ok = 0;
             for (ti = tab; ti->name; ti++)
-                if (!strcmp (argv[no], ti->name))
+                if (!strcmp(argv[no], "@all") || !strcmp (argv[no], ti->name))
                 {
                     ODR_MASK_SET (ob, ti->pos);
-                    break;
+                    ok = 1;
                 }
-            if (!ti->name)
+            if (!ok)
             {
                 Tcl_AppendResult (interp, "bad bit mask ", argv[no], NULL);
                 return ir_tcl_error_exec (interp, argc, argv);
@@ -3334,7 +3347,6 @@ static int do_scanLine (void *obj, Tcl_Interp *interp, int argc, char **argv)
                           " position\"", NULL);
         return TCL_ERROR;
     }
-    printf ("argv[2]=%s\n", argv[2]);
     if (Tcl_GetInt (interp, argv[2], &i) == TCL_ERROR)
         return TCL_ERROR;
     if (!p->entries_flag || !p->entries || i >= p->num_entries || i < 0)
@@ -3489,6 +3501,18 @@ static int ir_log_proc (ClientData clientData, Tcl_Interp *interp,
 }
 
 
+/* 
+ * ir_version: log ir version
+ */
+static int ir_version (ClientData clientData, Tcl_Interp *interp,
+                        int argc, char **argv)
+{
+    Tcl_AppendElement (interp, IR_TCL_VERSION);
+    Tcl_AppendElement (interp, YAZ_VERSION);
+    return TCL_OK;
+}
+
+
 /* ------------------------------------------------------- */
 static void ir_initResponse (void *obj, Z_InitResponse *initrs)
 {
@@ -3753,11 +3777,13 @@ static void ir_searchResponse (void *o, Z_SearchResponse *searchrs,
         logf (LOG_DEBUG, "Search response, no object!");
         return;
     }
-    setobj->searchStatus = searchrs->searchStatus ? 1 : 0;
+    setobj->searchStatus = *searchrs->searchStatus;
     get_referenceId (&setobj->set_inher.referenceId, searchrs->referenceId);
     setobj->resultCount = *searchrs->resultCount;
     if (searchrs->presentStatus)
         setobj->presentStatus = *searchrs->presentStatus;
+    else
+        setobj->presentStatus = Z_RES_NONE;
     if (searchrs->nextResultSetPosition)
         setobj->nextResultSetPosition = *searchrs->nextResultSetPosition;
 
@@ -3846,7 +3872,6 @@ static void ir_scanResponse (void *o, Z_ScanResponse *scanrs,
         Z_Entry **ze;
 
         scanobj->entries_flag = 1;
-#ifdef ASN_COMPILED
        if (scanrs->entries)
        {
             scanobj->num_entries = scanrs->entries->num_entries;
@@ -3854,15 +3879,6 @@ static void ir_scanResponse (void *o, Z_ScanResponse *scanrs,
                                              sizeof(*scanobj->entries));
            ze = scanrs->entries->entries;
        }
-#else
-       if (scanrs->entries->which == Z_ListEntries_entries)
-       {
-            scanobj->num_entries = scanrs->entries->u.entries->num_entries;
-            scanobj->entries = ir_tcl_malloc (scanobj->num_entries * 
-                                             sizeof(*scanobj->entries));
-           ze = scanrs->entries->u.entries->entries;
-       }
-#endif
        for (i=0; i<scanobj->num_entries; i++, ze++)
        {
            scanobj->entries[i].which = (*ze)->which;
@@ -3894,21 +3910,11 @@ static void ir_scanResponse (void *o, Z_ScanResponse *scanrs,
                break;
            }
        }
-#ifdef ASN_COMPILED
        if (scanrs->entries->nonsurrogateDiagnostics)
            ir_handleDiags (&scanobj->nonSurrogateDiagnosticList,
                             &scanobj->nonSurrogateDiagnosticNum,
                             scanrs->entries->nonsurrogateDiagnostics,
                             scanrs->entries->num_nonsurrogateDiagnostics);
-#else
-       if (scanrs->entries->which == Z_ListEntries_nonSurrogateDiagnostics)
-            ir_handleDiags (&scanobj->nonSurrogateDiagnosticList,
-                            &scanobj->nonSurrogateDiagnosticNum,
-                            scanrs->entries->u.nonSurrogateDiagnostics->
-                            diagRecs,
-                            scanrs->entries->u.nonSurrogateDiagnostics->
-                            num_diagRecs);
-#endif
     }
 }
 
@@ -4203,6 +4209,8 @@ EXPORT (int,Irtcl_Init) (Tcl_Interp *interp)
                        (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
     Tcl_CreateCommand (interp, "ir-log", ir_log_proc,
                        (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+    Tcl_CreateCommand (interp, "ir-version", ir_version, (ClientData) NULL,
+                       (Tcl_CmdDeleteProc *) NULL);
     nmem_init ();
     return TCL_OK;
 }