1*20196Ssam /* @(#)fwrite.c 4.5 (Berkeley) 05/14/85 */ 216550Skarels #include <stdio.h> 316550Skarels 416550Skarels fwrite(ptr, size, count, iop) 516550Skarels register char *ptr; 616550Skarels unsigned size, count; 716550Skarels register FILE *iop; 816550Skarels { 916550Skarels register int s; 1016550Skarels 1116550Skarels s = size * count; 1217443Sralph if (iop->_flag & _IOLBF) 1317861Sralph while (s > 0) { 1417443Sralph if (--iop->_cnt > -iop->_bufsiz && *ptr != '\n') 1517443Sralph *iop->_ptr++ = *ptr++; 1617443Sralph else if (_flsbuf(*(unsigned char *)ptr++, iop) == EOF) 1717443Sralph break; 1817861Sralph s--; 1917443Sralph } 2017443Sralph else while (s > 0) { 2116550Skarels if (iop->_cnt < s) { 2216550Skarels if (iop->_cnt > 0) { 2316550Skarels bcopy(ptr, iop->_ptr, iop->_cnt); 2416550Skarels ptr += iop->_cnt; 2516550Skarels iop->_ptr += iop->_cnt; 2616550Skarels s -= iop->_cnt; 2716550Skarels } 2817443Sralph if (_flsbuf(*(unsigned char *)ptr++, iop) == EOF) 2916550Skarels break; 3016550Skarels s--; 3116550Skarels } 3216550Skarels if (iop->_cnt >= s) { 3316550Skarels bcopy(ptr, iop->_ptr, s); 3416550Skarels iop->_ptr += s; 3516550Skarels iop->_cnt -= s; 3616550Skarels return (count); 3716550Skarels } 3816550Skarels } 39*20196Ssam return (size != 0 ? count - ((s + size - 1) / size) : 0); 4016550Skarels } 41