xref: /csrg-svn/usr.bin/window/mloop.c (revision 42835)
118742Sedward /*
233514Sbostic  * Copyright (c) 1983 Regents of the University of California.
333514Sbostic  * All rights reserved.
433514Sbostic  *
5*42835Sbostic  * %sccs.include.redist.c%
618742Sedward  */
718742Sedward 
833514Sbostic #ifndef lint
9*42835Sbostic static char sccsid[] = "@(#)mloop.c	3.16 (Berkeley) 06/02/90";
1033514Sbostic #endif /* not lint */
1133514Sbostic 
1214894Sedward #include "defs.h"
1314894Sedward 
1414894Sedward mloop()
1514894Sedward {
1614894Sedward 	while (!quit) {
1716282Sedward 		if (incmd) {
1816124Sedward 			docmd();
1916124Sedward 		} else if (wwcurwin->ww_state != WWS_HASPROC) {
2031140Sedward 			if (!wwcurwin->ww_keepopen)
2131140Sedward 				closewin(wwcurwin);
2216282Sedward 			setcmd(1);
2316124Sedward 			if (wwpeekc() == escapec)
2416124Sedward 				(void) wwgetc();
2514894Sedward 			error("Process died.");
2616124Sedward 		} else {
2718334Sedward 			register struct ww *w = wwcurwin;
2816124Sedward 			register char *p;
2916124Sedward 			register n;
3016124Sedward 
3134107Sedward 			if (wwibp >= wwibq)
3234107Sedward 				wwiomux();
3334107Sedward 			for (p = wwibp; p < wwibq && *p != escapec;
3434107Sedward 			     p++)
3534107Sedward 				;
3634107Sedward 			if ((n = p - wwibp) > 0) {
3734107Sedward 				if (!w->ww_ispty && w->ww_stopped)
3834107Sedward 					startwin(w);
3934107Sedward 				(void) write(w->ww_pty, wwibp, n);
4034107Sedward 				wwibp = p;
4114894Sedward 			}
4234107Sedward 			if (wwpeekc() == escapec) {
4334107Sedward 				(void) wwgetc();
4434107Sedward 				setcmd(1);
4534107Sedward 			}
4614894Sedward 		}
4714894Sedward 	}
4814894Sedward }
49