int __fill_buffer( FILE *fp ) { if( _FP_BASE( fp ) == NULL ) { __ioalloc( fp ); } if( fp->_flag & _ISTTY ) { /* 20-aug-90 */ if( fp->_flag & (_IONBF | _IOLBF) ) { __flushall( _ISTTY ); /* flush all TTY output */ } } fp->_flag &= ~_UNGET; /* 10-mar-90 */ fp->_ptr = _FP_BASE( fp ); #ifdef __UNIX__ fp->_cnt = __qread( fileno( fp ), fp->_ptr, (fp->_flag & _IONBF) ? 1 : fp->_bufsize ); #else if(( fp->_flag & (_IONBF | _ISTTY)) == (_IONBF | _ISTTY) && ( fileno( fp ) == STDIN_FILENO )) { int c; /* JBS 31-may-91 */ fp->_cnt = 0; c = getche(); if( c != EOF ) { *fp->_ptr = c; fp->_cnt = 1; } } else { fp->_cnt = __qread( fileno( fp ), fp->_ptr, (fp->_flag & _IONBF) ? 1 : fp->_bufsize ); } #endif if( fp->_cnt <= 0 ) { if( fp->_cnt == 0 ) { fp->_flag |= _EOF; } else { fp->_flag |= _SFERR; fp->_cnt = 0; } } return( fp->_cnt ); }
_WCRTLINK int flushall( void ) { return( __flushall( ~0 ) ); }