1*17861Sralph /* @(#)fwrite.c 4.4 (Berkeley) 01/23/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) 13*17861Sralph 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; 18*17861Sralph 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 } 3916550Skarels return (count - ((s + size - 1) / size)); 4016550Skarels } 41