* USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $Log: wproto.c,v $
- * Revision 1.17 1996/01/26 09:02:22 adam
+ * Revision 1.18 1996/02/12 10:09:23 adam
+ * New parameter to wproto_init: directory root for the FIFOs (instead
+ * of using preprocessor defines FIFODIR/FIFOROOT).
+ *
+ * Revision 1.17 1996/01/26 09:02:22 adam
* Open of client FIFO called with O_NDELAY when reconnecting to shell
* in order to prevent serious lock if previous shell died without
* unlinking client FIFO.
if (rs == 0)
{
gw_log (GW_LOG_STAT, mod,
- "wproto_process returning 0 after %d second timeout.",
+ "select %d second timeout.",
timeout);
unlink (wc->wf_serverp);
return 0;
}
}
-WCLIENT wproto_init(void)
+WCLIENT wproto_init (const char *fifoDir)
{
char *val, path2[256];
wclient_data *new;
gw_log (GW_LOG_FATAL, mod, "GWID not set");
exit (1);
}
+ new->fifoDir = fifoDir;
new->id = atoi (val);
- sprintf(new->path, "%s/%s/clt%d", FIFOROOT, FIFODIR, new->id);
+ sprintf(new->path, "%s/clt%d", new->fifoDir, new->id);
if (mkfifo(new->path, 0666 | S_IFIFO) < 0)
gw_log (GW_LOG_WARN|GW_LOG_ERRNO, mod, "mkfifo(%s)", new->path);
gw_log (GW_LOG_DEBUG, mod, "Synchronizing with server.");
- sprintf(path2, "%s/%s/srv%d", FIFOROOT, FIFODIR, getppid());
+ sprintf(path2, "%s/srv%d", new->fifoDir, getppid());
if ((new->lineout = open(path2, O_WRONLY)) < 0)
{
gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, mod, "open out %s", path2);
}
wproto_uncache(wc, level);
p = &wc->cache[++wc->cache_level];
- sprintf(p->path, "%s/%s/csh%d.%d", FIFOROOT, FIFODIR, wc->id, level);
+ sprintf(p->path, "%s/csh%d.%d", wc->fifoDir, wc->id, level);
if ((wc->cache_fd = open(p->path, O_WRONLY|O_CREAT|O_TRUNC, 0600)) < 0)
{
gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, mod, "open %s", p->path);
* USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $Log: wproto.h,v $
- * Revision 1.7 1996/01/24 08:26:55 adam
+ * 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
#define COMBUF 4096
#define OUTBUFFER_CHUNK 4096
-#define FIFOROOT "/tmp"
-#define FIFODIR "egw"
-
typedef struct wform_data
{
char name[20];
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, const 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, const char *s);
-void wo_write(WCLIENT wc, const char *s, size_t len);
+char *wgetval (WCLIENT wc, char *name);
+int wproto_process (WCLIENT wc, int timeout);
+WCLIENT wproto_init (const char *fifoDir);
+void wo_printf (WCLIENT wc, const char *fmt, ...);
+void wo_clear (WCLIENT wc, const 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, const char *s);
+void wo_write (WCLIENT wc, const char *s, size_t len);
#endif