|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #if defined(LIBC_SCCS) && !defined(lint) ! 8: static char sccsid[] = "@(#)fwrite.c 5.2 (Berkeley) 3/9/86"; ! 9: #endif LIBC_SCCS and not lint ! 10: ! 11: #include <stdio.h> ! 12: ! 13: fwrite(ptr, size, count, iop) ! 14: register char *ptr; ! 15: unsigned size, count; ! 16: register FILE *iop; ! 17: { ! 18: register int s; ! 19: ! 20: s = size * count; ! 21: if (iop->_flag & _IOLBF) ! 22: while (s > 0) { ! 23: if (--iop->_cnt > -iop->_bufsiz && *ptr != '\n') ! 24: *iop->_ptr++ = *ptr++; ! 25: else if (_flsbuf(*(unsigned char *)ptr++, iop) == EOF) ! 26: break; ! 27: s--; ! 28: } ! 29: else while (s > 0) { ! 30: if (iop->_cnt < s) { ! 31: if (iop->_cnt > 0) { ! 32: bcopy(ptr, iop->_ptr, iop->_cnt); ! 33: ptr += iop->_cnt; ! 34: iop->_ptr += iop->_cnt; ! 35: s -= iop->_cnt; ! 36: } ! 37: if (_flsbuf(*(unsigned char *)ptr++, iop) == EOF) ! 38: break; ! 39: s--; ! 40: } ! 41: if (iop->_cnt >= s) { ! 42: bcopy(ptr, iop->_ptr, s); ! 43: iop->_ptr += s; ! 44: iop->_cnt -= s; ! 45: return (count); ! 46: } ! 47: } ! 48: return (size != 0 ? count - ((s + size - 1) / size) : 0); ! 49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.