Ported ir-tcl to use the beta releases of tcl7.5/tk4.1.
[ir-tcl-moved-to-github.git] / tclmain.c
index 377e87b..a238fba 100644 (file)
--- a/tclmain.c
+++ b/tclmain.c
@@ -5,7 +5,23 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: tclmain.c,v $
- * Revision 1.12  1995-08-28 11:07:16  adam
+ * Revision 1.16  1996-02-05 17:58:05  adam
+ * Ported ir-tcl to use the beta releases of tcl7.5/tk4.1.
+ *
+ * Revision 1.15  1996/01/10  09:18:45  adam
+ * PDU specific callbacks implemented: initRespnse, searchResponse,
+ *  presentResponse and scanResponse.
+ * Bug fix in the command line shell (tclmain.c) - discovered on OSF/1.
+ *
+ * Revision 1.14  1995/09/21  13:11:53  adam
+ * Support of dynamic loading.
+ * Test script uses load command if necessary.
+ *
+ * Revision 1.13  1995/08/28  12:21:22  adam
+ * Removed lines and list as synonyms of list in MARC extractron.
+ * Configure searches also for tk4.0 / tcl7.4.
+ *
+ * Revision 1.12  1995/08/28  11:07:16  adam
  * Minor changes.
  *
  * Revision 1.11  1995/08/03  13:23:02  adam
@@ -71,7 +87,7 @@ int Tcl_AppInit (Tcl_Interp *interp)
 {
     if (Tcl_Init(interp) == TCL_ERROR)
         return TCL_ERROR;
-    if (ir_tcl_init(interp) == TCL_ERROR)
+    if (Irtcl_Init(interp) == TCL_ERROR)
         return TCL_ERROR;
     return TCL_OK;
 }
@@ -87,7 +103,6 @@ int main (int argc, char **argv)
     if (argc == 2)
         fileName = argv[1];
 
-    log_init (LOG_ALL, "", NULL);
     if (Tcl_AppInit(interp) != TCL_OK) {
         fprintf(stderr, "Tcl_AppInit failed: %s\n", interp->result);
     }
@@ -192,18 +207,18 @@ void tcl_mainloop (Tcl_Interp *interp, int interactive)
         {
             if (FD_ISSET (i, &fdset_tcl_r))
             {
-                assert (callback_table[i].r_handle);
-                (*callback_table[i].r_handle) (callback_table[i].obj);
+                if (callback_table[i].r_handle)
+                    (*callback_table[i].r_handle) (callback_table[i].obj);
             }
             if (FD_ISSET (i, &fdset_tcl_w))
             {
-                assert (callback_table[i].w_handle);
-                (*callback_table[i].w_handle) (callback_table[i].obj);
+                if (callback_table[i].w_handle)
+                    (*callback_table[i].w_handle) (callback_table[i].obj);
             }
             if (FD_ISSET (i, &fdset_tcl_x))
             {
-                assert (callback_table[i].x_handle);
-                (*callback_table[i].x_handle) (callback_table[i].obj);
+                if (callback_table[i].x_handle)
+                    (*callback_table[i].x_handle) (callback_table[i].obj);
             }
         }
         if (interactive && FD_ISSET(0, &fdset_tcl_r))
@@ -228,8 +243,14 @@ void tcl_mainloop (Tcl_Interp *interp, int interactive)
     }
 }
 
+#if IRTCL_GENERIC_FILES
+void ir_select_add (Tcl_File file, void *obj)
+{
+    int fd = (int) Tcl_GetFileInfo (file, NULL);
+#else
 void ir_select_add (int fd, void *obj)
 {
+#endif
     callback_table[fd].obj = obj;
     callback_table[fd].r_handle = ir_select_read;
     callback_table[fd].w_handle = NULL;
@@ -238,20 +259,38 @@ void ir_select_add (int fd, void *obj)
         max_fd = fd;
 }
 
+#if IRTCL_GENERIC_FILES
+void ir_select_add_write (Tcl_File file, void *obj)
+{
+    int fd = (int) Tcl_GetFileInfo (file, NULL);
+#else
 void ir_select_add_write (int fd, void *obj)
 {
+#endif
     callback_table[fd].w_handle = ir_select_write;
     if (fd > max_fd)
         max_fd = fd;
 }
 
+#if IRTCL_GENERIC_FILES
+void ir_select_remove_write (Tcl_File file, void *obj)
+{
+    int fd = (int) Tcl_GetFileInfo (file, NULL);
+#else
 void ir_select_remove_write (int fd, void *obj)
 {
+#endif
     callback_table[fd].w_handle = NULL;
 }
 
+#if IRTCL_GENERIC_FILES
+void ir_select_remove (Tcl_File file, void *obj)
+{
+    int fd = (int) Tcl_GetFileInfo (file, NULL);
+#else
 void ir_select_remove (int fd, void *obj)
 {
+#endif
     callback_table[fd].r_handle = NULL;
     callback_table[fd].w_handle = NULL;
     callback_table[fd].x_handle = NULL;