1 /* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org> 2 * 3 * GNU Library General Public License (LGPL) version 2 or later. 4 * 5 * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details. 6 */ 7 8 #include "_stdio.h" 9 10 #ifdef __UCLIBC_MJN3_ONLY__ 11 #warning CONSIDER: Do we really need a seperate rfill function? 12 #endif 13 14 #ifdef __STDIO_BUFFERS 15 16 /* Read some data into the buffer. 17 * Returns number of bytes read into the buffer. 18 * If 0 is returned, then either EOF or ERROR. 19 * Side effects are those of _stdio_READ. 20 */ 21 __stdio_rfill(register FILE * __restrict stream)22size_t attribute_hidden __stdio_rfill(register FILE *__restrict stream) 23 { 24 size_t rv; 25 26 __STDIO_STREAM_VALIDATE(stream); 27 assert(stream->__filedes >= -1); 28 assert(__STDIO_STREAM_IS_READING(stream)); 29 assert(!__STDIO_STREAM_BUFFER_RAVAIL(stream)); /* Buffer must be empty. */ 30 assert(__STDIO_STREAM_BUFFER_SIZE(stream)); /* Must have a buffer. */ 31 assert(!(stream->__modeflags & __FLAG_UNGOT)); 32 #ifdef __UCLIBC_HAS_STDIO_GETC_MACRO__ 33 assert(stream->__bufgetc_u == stream->__bufstart); 34 #endif 35 36 rv = __stdio_READ(stream, stream->__bufstart, 37 stream->__bufend - stream->__bufstart); 38 stream->__bufpos = stream->__bufstart; 39 stream->__bufread = stream->__bufstart + rv; 40 41 __STDIO_STREAM_VALIDATE(stream); 42 return rv; 43 } 44 45 #endif 46