116125Sedward #ifndef lint 2*18756Sedward static char sccsid[] = "@(#)ttoutput.c 3.3 04/24/85"; 316125Sedward #endif 416125Sedward 5*18756Sedward /* 6*18756Sedward * Copyright (c) 1983 Regents of the University of California, 7*18756Sedward * All rights reserved. Redistribution permitted subject to 8*18756Sedward * the terms of the Berkeley Software License Agreement. 9*18756Sedward */ 10*18756Sedward 1116125Sedward #include "ww.h" 1216125Sedward #include "tt.h" 1316125Sedward #include <sys/errno.h> 1416125Sedward 1516125Sedward /* 1616125Sedward * Buffered output package. 1716125Sedward * We need this because stdio fails on non-blocking writes. 1816125Sedward */ 1916125Sedward 2016125Sedward ttflush() 2116125Sedward { 2216125Sedward register char *p; 2316125Sedward register n; 2416125Sedward extern errno; 2516125Sedward 2616125Sedward wwnflush++; 2716125Sedward for (p = tt_ob; p < tt_obp;) { 2816125Sedward wwnwr++; 2916125Sedward n = write(1, p, tt_obp - p); 3016125Sedward if (n < 0) { 3116125Sedward wwnwre++; 3216125Sedward if (errno != EWOULDBLOCK) { 3316125Sedward /* can't deal with this */ 3416125Sedward p = tt_obp; 3516125Sedward } 3616125Sedward } else if (n == 0) { 3716125Sedward /* what to do? */ 3816125Sedward wwnwrz++; 3916125Sedward } else { 4016125Sedward wwnwrc += n; 4116125Sedward p += n; 4216125Sedward } 4316125Sedward } 4416125Sedward tt_obp = tt_ob; 4516125Sedward } 4616125Sedward 4716125Sedward ttputs(s) 4816125Sedward register char *s; 4916125Sedward { 5016125Sedward while (*s) 5116125Sedward ttputc(*s++); 5216125Sedward } 53