1*16125Sedward #ifndef lint 2*16125Sedward static char *sccsid = "@(#)ttoutput.c 3.1 84/03/03"; 3*16125Sedward #endif 4*16125Sedward 5*16125Sedward #include "ww.h" 6*16125Sedward #include "tt.h" 7*16125Sedward #include <sys/errno.h> 8*16125Sedward 9*16125Sedward /* 10*16125Sedward * Buffered output package. 11*16125Sedward * We need this because stdio fails on non-blocking writes. 12*16125Sedward */ 13*16125Sedward 14*16125Sedward ttflush() 15*16125Sedward { 16*16125Sedward register char *p; 17*16125Sedward register n; 18*16125Sedward extern errno; 19*16125Sedward 20*16125Sedward wwnflush++; 21*16125Sedward for (p = tt_ob; p < tt_obp;) { 22*16125Sedward wwnwr++; 23*16125Sedward n = write(1, p, tt_obp - p); 24*16125Sedward if (n < 0) { 25*16125Sedward wwnwre++; 26*16125Sedward if (errno != EWOULDBLOCK) { 27*16125Sedward /* can't deal with this */ 28*16125Sedward p = tt_obp; 29*16125Sedward } 30*16125Sedward } else if (n == 0) { 31*16125Sedward /* what to do? */ 32*16125Sedward wwnwrz++; 33*16125Sedward } else { 34*16125Sedward wwnwrc += n; 35*16125Sedward p += n; 36*16125Sedward } 37*16125Sedward } 38*16125Sedward tt_obp = tt_ob; 39*16125Sedward } 40*16125Sedward 41*16125Sedward ttputs(s) 42*16125Sedward register char *s; 43*16125Sedward { 44*16125Sedward while (*s) 45*16125Sedward ttputc(*s++); 46*16125Sedward } 47