1*16550Skarels /* @(#)fwrite.c 4.1 (Berkeley) 05/29/84 */ 2*16550Skarels #include <stdio.h> 3*16550Skarels 4*16550Skarels fwrite(ptr, size, count, iop) 5*16550Skarels register char *ptr; 6*16550Skarels unsigned size, count; 7*16550Skarels register FILE *iop; 8*16550Skarels { 9*16550Skarels register int s; 10*16550Skarels 11*16550Skarels s = size * count; 12*16550Skarels while (s > 0) { 13*16550Skarels if (iop->_cnt < s) { 14*16550Skarels if (iop->_cnt > 0) { 15*16550Skarels bcopy(ptr, iop->_ptr, iop->_cnt); 16*16550Skarels ptr += iop->_cnt; 17*16550Skarels iop->_ptr += iop->_cnt; 18*16550Skarels s -= iop->_cnt; 19*16550Skarels } 20*16550Skarels if (_flsbuf((unsigned)*ptr++, iop) == EOF) 21*16550Skarels break; 22*16550Skarels s--; 23*16550Skarels } 24*16550Skarels if (iop->_cnt >= s) { 25*16550Skarels bcopy(ptr, iop->_ptr, s); 26*16550Skarels iop->_ptr += s; 27*16550Skarels iop->_cnt -= s; 28*16550Skarels return (count); 29*16550Skarels } 30*16550Skarels } 31*16550Skarels return (count - ((s + size - 1) / size)); 32*16550Skarels } 33