|
|
1.1 ! root 1: /* ! 2: * libc/stdio/fwrite.c ! 3: * ANSI-compliant C standard i/o library. ! 4: * fwrite() ! 5: * ANSI 4.9.8.2. ! 6: * Write nmemb items of given size from ptr to stream. ! 7: */ ! 8: ! 9: #include <stdio.h> ! 10: #include <stdlib.h> ! 11: ! 12: size_t ! 13: fwrite(ptr, size, nmemb, stream) const __VOID__ *ptr; size_t size, nmemb; register FILE *stream; ! 14: { ! 15: register size_t nb, n; ! 16: register unsigned char *p; ! 17: ! 18: n = nb = size * nmemb; ! 19: ! 20: /* Throw away ungotten character if present. */ ! 21: if (stream->_ff2 & _FUNGOT) ! 22: (*stream->_f2p->_gt)(stream); ! 23: ! 24: /* If unbuffered, write() will work, otherwise use putc(). */ ! 25: /* putc() sets _FERR as required, write() does not. */ ! 26: if (stream->_mode == _MODE_FBUF || stream->_mode == _MODE_LBUF) { ! 27: for (p = ptr; nb && putc(*p++, stream) != EOF; nb--) ! 28: ; ! 29: if (nb) ! 30: return (n - nb) / size; ! 31: } else if ((nb = write(fileno(stream), ptr, nb)) != n) { ! 32: stream->_ff1 |= _FERR; ! 33: return nb / size; ! 34: } ! 35: return nmemb; ! 36: } ! 37: ! 38: /* end of libc/stdio/fwrite.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.