118742Sedward /* 2*62461Sbostic * Copyright (c) 1983, 1993 3*62461Sbostic * The Regents of the University of California. All rights reserved. 433514Sbostic * 542954Sbostic * This code is derived from software contributed to Berkeley by 642954Sbostic * Edward Wang at The University of California, Berkeley. 742954Sbostic * 842835Sbostic * %sccs.include.redist.c% 918742Sedward */ 1018742Sedward 1133514Sbostic #ifndef lint 12*62461Sbostic static char sccsid[] = "@(#)mloop.c 8.1 (Berkeley) 06/06/93"; 1333514Sbostic #endif /* not lint */ 1433514Sbostic 1558159Storek #include <sys/param.h> 1614894Sedward #include "defs.h" 1714894Sedward mloop()1814894Sedwardmloop() 1914894Sedward { 2014894Sedward while (!quit) { 2116282Sedward if (incmd) { 2216124Sedward docmd(); 2316124Sedward } else if (wwcurwin->ww_state != WWS_HASPROC) { 2431140Sedward if (!wwcurwin->ww_keepopen) 2531140Sedward closewin(wwcurwin); 2616282Sedward setcmd(1); 2716124Sedward if (wwpeekc() == escapec) 2816124Sedward (void) wwgetc(); 2914894Sedward error("Process died."); 3016124Sedward } else { 3118334Sedward register struct ww *w = wwcurwin; 3216124Sedward register char *p; 3316124Sedward register n; 3416124Sedward 3534107Sedward if (wwibp >= wwibq) 3634107Sedward wwiomux(); 3755912Sedward for (p = wwibp; p < wwibq && wwmaskc(*p) != escapec; 3834107Sedward p++) 3934107Sedward ; 4034107Sedward if ((n = p - wwibp) > 0) { 4134107Sedward if (!w->ww_ispty && w->ww_stopped) 4234107Sedward startwin(w); 4358159Storek #if defined(sun) && !defined(BSD) 4458159Storek /* workaround for SunOS pty bug */ 4556711Sedward while (--n >= 0) 4656711Sedward (void) write(w->ww_pty, wwibp++, 1); 4756711Sedward #else 4834107Sedward (void) write(w->ww_pty, wwibp, n); 4934107Sedward wwibp = p; 5056711Sedward #endif 5114894Sedward } 5234107Sedward if (wwpeekc() == escapec) { 5334107Sedward (void) wwgetc(); 5434107Sedward setcmd(1); 5534107Sedward } 5614894Sedward } 5714894Sedward } 5814894Sedward } 59