114894Sedward #ifndef lint 2*31140Sedward static char sccsid[] = "@(#)mloop.c 3.9 05/18/87"; 314894Sedward #endif 414894Sedward 518742Sedward /* 618742Sedward * Copyright (c) 1983 Regents of the University of California, 718742Sedward * All rights reserved. Redistribution permitted subject to 818742Sedward * the terms of the Berkeley Software License Agreement. 918742Sedward */ 1018742Sedward 1114894Sedward #include "defs.h" 1214894Sedward 1314894Sedward mloop() 1414894Sedward { 1517409Sedward wwrint(); /* catch typeahead before we set ASYNC */ 1614894Sedward while (!quit) { 1716282Sedward if (incmd) { 1816124Sedward docmd(); 1916124Sedward } else if (wwcurwin->ww_state != WWS_HASPROC) { 20*31140Sedward if (!wwcurwin->ww_keepopen) 21*31140Sedward 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 3115872Sedward wwiomux(); 3216124Sedward if (wwibp < wwibq) { 3316124Sedward for (p = wwibp; p < wwibq && *p != escapec; 3416124Sedward p++) 3516124Sedward ; 3616124Sedward if ((n = p - wwibp) > 0) { 3718334Sedward if (!w->ww_ispty && w->ww_stopped) 3818334Sedward startwin(w); 3918334Sedward (void) write(w->ww_pty, wwibp, n); 4016124Sedward wwibp = p; 4116124Sedward } 4216124Sedward if (wwpeekc() == escapec) { 4316124Sedward (void) wwgetc(); 4416282Sedward setcmd(1); 4516124Sedward } 4614894Sedward } 4714894Sedward } 4814894Sedward } 4914894Sedward } 50