X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=www%2Fwirtcl.c;h=942abdc52d26d02b0d0622c8e06a8385352a7d4b;hb=3871eda3b3a1518d4d18c1ffc0ed0375cb88bdf5;hp=4828b89acd1e19bc9ed16f6b37079ff91597701c;hpb=53a28f8f2ab30977f9ee2edffe5809fae61d5a4e;p=egate.git diff --git a/www/wirtcl.c b/www/wirtcl.c index 4828b89..942abdc 100644 --- a/www/wirtcl.c +++ b/www/wirtcl.c @@ -41,7 +41,16 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * * $Log: wirtcl.c,v $ - * Revision 1.12 1996/01/12 10:05:18 adam + * Revision 1.15 1996/02/21 14:58:01 adam + * Modified to use ir_tcl_select_set. + * + * Revision 1.14 1996/02/12 10:10:31 adam + * Resource/config system used by the gateway. + * + * Revision 1.13 1996/01/24 08:26:54 adam + * All tcl commands prefixed with egw_ (except the html command). + * + * Revision 1.12 1996/01/12 10:05:18 adam * If script name ends with ';' HTTP/GET/Expires will be defined. * The cgi interface only reads final handshake if response from * server (shell) was zero-terminated [If it isn't it probably died]. @@ -128,7 +137,6 @@ struct tcl_info { WCLIENT wcl; }; - static int events (struct tcl_info *p, char *waitVar, int tout); static int proc_zwait_invoke (ClientData clientData, Tcl_Interp *interp, @@ -141,14 +149,11 @@ static int proc_zwait_invoke (ClientData clientData, Tcl_Interp *interp, return events (p, argv[1], (argc == 3) ? atoi(argv[2]) : 0); } - - -/* select(2) callbacks */ +/* select callbacks */ struct callback { - void (*r_handle)(ClientData); - void (*w_handle)(ClientData); - void (*x_handle)(ClientData); - void *obj; + void (*handle)(ClientData, int, int, int); + int r, w, e; + ClientData obj; }; #define MAX_CALLBACK 200 @@ -177,15 +182,11 @@ static void *do_create (WCLIENT wcl, void *args) gw_log (GW_LOG_FATAL, mod, "Cannot make Irtcl_Interp"); exit (1); } - log_init(LOG_ALL, "irtcl", LOGDIR "/irtcl_log"); + log_init(LOG_ALL, "irtcl", "irtcl_log"); /* initialize irtcl */ - Tcl_CreateCommand (p->interp, "zwait", proc_zwait_invoke, p, NULL); + Tcl_CreateCommand (p->interp, "egw_wait", proc_zwait_invoke, p, NULL); for (i=0; i max_fd) - max_fd = fd; -} - -void ir_select_add_write (int fd, void *obj) +void ir_tcl_select_set (void (*f)(ClientData clientData, int r, int w, int e), + int fd, ClientData clientData, int r, int w, int e) { - callback_table[fd].w_handle = ir_select_write; + callback_table[fd].handle = f; + callback_table[fd].obj = clientData; + callback_table[fd].r = r; + callback_table[fd].w = w; + callback_table[fd].e = e; if (fd > max_fd) max_fd = fd; } -void ir_select_remove_write (int fd, void *obj) -{ - callback_table[fd].w_handle = NULL; -} - -void ir_select_remove (int fd, void *obj) -{ - callback_table[fd].r_handle = NULL; - callback_table[fd].w_handle = NULL; - callback_table[fd].x_handle = NULL; -} - static int do_load (char *parms, void *mydata) { struct tcl_info *p = mydata;