|
|
1.1 ! root 1: /* ! 2: * libc/stdio/fflush.c ! 3: * Standard I/O Library. ! 4: * Write out any unwritten data in buffer. ! 5: */ ! 6: ! 7: #include <stdio.h> ! 8: #include <errno.h> ! 9: ! 10: int ! 11: fflush(fp) ! 12: register FILE *fp; ! 13: { ! 14: register int n, cc, oerrno; ! 15: ! 16: oerrno = errno; ! 17: n = errno = fp->_cc = 0; ! 18: if (fp->_ff&_FERR) ! 19: n = EOF; ! 20: else if ((cc = fp->_cp - fp->_dp) <= 0 ! 21: || write(fileno(fp), fp->_dp, cc) == cc ! 22: || errno == EINTR) { ! 23: if (cc < 0) ! 24: ; ! 25: else if (fp->_cp == _ep(fp)) ! 26: fp->_dp = fp->_cp = fp->_bp; ! 27: else ! 28: fp->_dp = fp->_cp; ! 29: } else { ! 30: fp->_ff |= _FERR; ! 31: n = EOF; ! 32: } ! 33: if (errno == 0) ! 34: errno = oerrno; ! 35: return n; ! 36: } ! 37: ! 38: /* 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.