X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fwproto.h;h=deb30068f4ab15143756198e438159dac2b12526;hb=1140389ab96fc8ca7bc9c8dc642adbcec625f4a6;hp=fef0d489eff745742c2d4e909f5578b80ffaccc7;hpb=1938b1fd36e774fa9b6d11a4eb5edfcdaee0267b;p=egate.git diff --git a/www/wproto.h b/www/wproto.h index fef0d48..deb3006 100644 --- a/www/wproto.h +++ b/www/wproto.h @@ -41,7 +41,55 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * * $Log: wproto.h,v $ - * Revision 1.1 1995/10/20 11:49:27 adam + * Revision 1.13 1997/01/27 11:27:15 adam + * Implemented a new command, egw_clear, to clear http output cache. + * Changed prototype for function wo_clear. + * + * Revision 1.12 1997/01/24 13:13:12 adam + * Implemnted egw_source and added a "raw" option to the URL. + * Fixed a bug in the buffering system of wproto; the macro wo_putc could + * override memory if it was the first HTML generating function called. + * + * Revision 1.11 1996/05/23 15:53:11 adam + * Bug fix: egw_enc failed on 8-bit chars. + * New command: egw_parms. + * + * Revision 1.10 1996/05/21 14:53:04 adam + * Tcl command wform extented; options -raw and -exists added. + * + * Revision 1.9 1996/03/14 11:48:39 adam + * New function egw_prog that returns name of shell. + * + * Revision 1.8 1996/02/12 10:09:25 adam + * New parameter to wproto_init: directory root for the FIFOs (instead + * of using preprocessor defines FIFODIR/FIFOROOT). + * + * Revision 1.7 1996/01/24 08:26:55 adam + * All tcl commands prefixed with egw_ (except the html command). + * + * Revision 1.6 1996/01/12 13:08:07 adam + * CGI script passes name of lock file to the shell. The server will not close + * the response FIFO until this file becomes unlocked. This method handles + * cancel operations much better. + * + * Revision 1.5 1996/01/12 10:05:21 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]. + * + * Revision 1.4 1995/11/06 10:51:18 adam + * End of response marker in response from wsh/wproto to wcgi. + * Shells are respawned when necessary. + * + * Revision 1.3 1995/10/27 15:12:11 adam + * IrTcl incorporated in the gateway. + * Better separation of script types. + * Z39.50 gateway scripts entered. + * + * Revision 1.2 1995/10/23 16:55:41 adam + * A lot of changes - really. + * + * Revision 1.1 1995/10/20 11:49:27 adam * First version of www gateway. * */ @@ -55,12 +103,9 @@ #define COMBUF 4096 #define OUTBUFFER_CHUNK 4096 -#define FIFOROOT "/tmp" -#define FIFODIR "egw" - typedef struct wform_data { - char name[20]; + char name[64]; char value[512]; } wform_data; @@ -70,11 +115,26 @@ typedef struct cache_data char path[256]; } cache_data; +struct w_select_handle { + int fd; + struct { + void (*sproc)(int, void *); + void *obj; + } rwx[3]; + struct w_select_handle *next; +}; + typedef struct wclient_data { - wform_data wf_data[100]; - char wf_parms[512]; - char wf_serverp[512]; + int id; + char *prog; + char *raw_data; + wform_data wf_data[50]; + wform_data wf_parms_var[50]; + char wf_parms[1024]; + char wf_serverp[1024]; + char wf_serverf[1024]; + char wf_script[1024]; char path[512]; int linein; int lineout; @@ -84,23 +144,31 @@ typedef struct wclient_data int cache_level; cache_data cache[20]; int cache_fd; + struct w_select_handle *select_list; + const char *fifoDir; } *WCLIENT, wclient_data; #define wo_putc(wc, ch) \ ((wc)->outbuffer_offset >= OUTBUFFER_CHUNK ? wo_overflow((wc), (ch)) : \ (*((wc)->outbuffer + (wc)->outbuffer_offset++) = (char) (ch)), 0) -char *wgetval(WCLIENT wc, char *name); -int wproto_process(WCLIENT wc, int timeout); -WCLIENT wproto_init(void); -void wo_printf(WCLIENT wc, const char *fmt, ...); -void wo_clear(WCLIENT wc, char *type); -int wo_finish(WCLIENT wc); -int wo_flush(WCLIENT wc); -int wo_overflow(WCLIENT wc, char ch); -void wproto_terminate(WCLIENT wc); -int wproto_cache(WCLIENT wc, int level); -int wo_puthtml(WCLIENT wc, char *name); -void wo_puts(WCLIENT wc, char *s); +char *wgetval (WCLIENT wc, char *name); + +/* wproto_process: wait for one request from egwcgi. returns <=0 on + timeout; returns >0 otherwise. */ +int wproto_process (WCLIENT wc, int timeout); + +/* wproto_init: initializes communication with egwcgi. */ +WCLIENT wproto_init (const char *fifoDir, const char *prog); + +void wo_printf (WCLIENT wc, const char *fmt, ...); +void wo_clear (WCLIENT wc); +int wo_finish (WCLIENT wc); +int wo_flush (WCLIENT wc); +int wo_overflow (WCLIENT wc, char ch); +void wproto_terminate (WCLIENT wc); +int wproto_cache (WCLIENT wc, int level); +void wo_puts (WCLIENT wc, const char *s); +void wo_write (WCLIENT wc, const char *s, size_t len); #endif