xref: /csrg-svn/usr.bin/window/wwiomux.c (revision 13923)
1*13923Sedward #ifndef lint
2*13923Sedward static	char *sccsid = "@(#)wwiomux.c	1.1 83/07/12";
3*13923Sedward #endif
4*13923Sedward 
5*13923Sedward #include "ww.h"
6*13923Sedward 
7*13923Sedward wwforce(imask)
8*13923Sedward register int *imask;
9*13923Sedward {
10*13923Sedward 	register struct ww *w;
11*13923Sedward 	char buf[512];
12*13923Sedward 	register int n;
13*13923Sedward 	register char *p;
14*13923Sedward 
15*13923Sedward 	for (w = _wwhead; w; w = w->ww_next)
16*13923Sedward 		*imask |= 1 << w->ww_pty;
17*13923Sedward 	n = select(getdtablesize(), imask,
18*13923Sedward 		(int *)0, (int *)0, (struct timeval *)0);
19*13923Sedward 	if (n <= 0)
20*13923Sedward 		return -1;
21*13923Sedward 	for (w = _wwhead; w; w = w->ww_next) {
22*13923Sedward 		if (*imask & 1<<w->ww_pty) {
23*13923Sedward 			n = read(w->ww_pty, buf, sizeof buf);
24*13923Sedward 			for (p = buf; n-- > 0; p++)
25*13923Sedward 				wwputc(*p, w);
26*13923Sedward 		}
27*13923Sedward 	}
28*13923Sedward 	return 0;
29*13923Sedward }
30