* Sebastian Hammer, Adam Dickmeiss
*
* $Log: tclmain.c,v $
- * Revision 1.10 1995-06-30 12:39:28 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
+ * Request queue.
+ *
+ * Revision 1.10 1995/06/30 12:39:28 adam
* Bug fix: loadFile didn't set record type.
* The MARC routines are a little less strict in the interpretation.
* Script display.tcl replaces the old marc.tcl.
#include <assert.h>
#include <tcl.h>
-
+#include <log.h>
#include "ir-tcl.h"
static char *fileName = NULL;
/* select(2) callbacks */
struct callback {
- void (*r_handle)(void *p);
- void (*w_handle)(void *p);
- void (*x_handle)(void *p);
+ void (*r_handle)(ClientData);
+ void (*w_handle)(ClientData);
+ void (*x_handle)(ClientData);
void *obj;
};
#define MAX_CALLBACK 200
{
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;
}
{
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))
}
}
+#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;
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;