xref: /csrg-svn/usr.bin/window/mloop.c (revision 18334)
114894Sedward #ifndef lint
2*18334Sedward static char sccsid[] = "@(#)mloop.c	3.7 03/13/85";
314894Sedward #endif
414894Sedward 
514894Sedward #include "defs.h"
614894Sedward 
714894Sedward mloop()
814894Sedward {
917409Sedward 	wwrint();		/* catch typeahead before we set ASYNC */
1014894Sedward 	while (!quit) {
1116282Sedward 		if (incmd) {
1216124Sedward 			docmd();
1316124Sedward 		} else if (wwcurwin->ww_state != WWS_HASPROC) {
1416282Sedward 			setcmd(1);
1516124Sedward 			if (wwpeekc() == escapec)
1616124Sedward 				(void) wwgetc();
1714894Sedward 			error("Process died.");
1816124Sedward 		} else {
19*18334Sedward 			register struct ww *w = wwcurwin;
2016124Sedward 			register char *p;
2116124Sedward 			register n;
2216124Sedward 
2315872Sedward 			wwiomux();
2416124Sedward 			if (wwibp < wwibq) {
2516124Sedward 				for (p = wwibp; p < wwibq && *p != escapec;
2616124Sedward 				     p++)
2716124Sedward 					;
2816124Sedward 				if ((n = p - wwibp) > 0) {
29*18334Sedward 					if (!w->ww_ispty && w->ww_stopped)
30*18334Sedward 						startwin(w);
31*18334Sedward 					(void) write(w->ww_pty, wwibp, n);
3216124Sedward 					wwibp = p;
3316124Sedward 				}
3416124Sedward 				if (wwpeekc() == escapec) {
3516124Sedward 					(void) wwgetc();
3616282Sedward 					setcmd(1);
3716124Sedward 				}
3814894Sedward 			}
3914894Sedward 		}
4014894Sedward 	}
4114894Sedward }
42