|
|
1.1 ! root 1: /* ! 2: * libc/stdio/fflush.c ! 3: * ANSI-compliant C standard i/o library. ! 4: * fflush() ! 5: * ANSI 4.9.5.2. ! 6: * Write out unwritten data in buffer. ! 7: */ ! 8: ! 9: #include <stdio.h> ! 10: #if COHERENT || GEMDOS ! 11: #include <errno.h> ! 12: #endif ! 13: ! 14: int ! 15: fflush(stream) register FILE *stream; ! 16: { ! 17: register int n; ! 18: register FILE **fpp; ! 19: register _FILE2 *f2p; ! 20: ! 21: if (stream == NULL) { ! 22: /* fflush all streams. */ ! 23: n = 0; ! 24: for (fpp = _fp+_NFILE; --fpp >= _fp; ) ! 25: if ((stream = *fpp) != NULL ! 26: && (stream->_ff2 & _FINUSE) ! 27: && fflush(stream) == EOF) ! 28: n = EOF; ! 29: return n; ! 30: } ! 31: stream->_cc = 0; ! 32: if ((stream->_ff1 & _FERR) != 0) ! 33: return EOF; ! 34: f2p = stream->_f2p; ! 35: if ((n = stream->_cp - f2p->_dp) <= 0 ! 36: || write(fileno(stream), f2p->_dp, n) == n ) { ! 37: if (n < 0) ! 38: ; ! 39: else if (stream->_cp == f2p->_ep) ! 40: f2p->_dp = stream->_cp = f2p->_bp; ! 41: else ! 42: f2p->_dp = stream->_cp; ! 43: return 0; ! 44: } else { ! 45: #if COHERENT || GEMDOS ! 46: if (errno == EINTR) ! 47: errno = 0; ! 48: else ! 49: #endif ! 50: stream->_ff1 |= _FERR; ! 51: return EOF; ! 52: } ! 53: } ! 54: ! 55: /* end of libc/stdio/fflush.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.