/* Copyright (C) 2004 Manuel Novoa III * * GNU Library General Public License (LGPL) version 2 or later. * * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details. */ #include "_stdio.h" #ifdef __UCLIBC_MJN3_ONLY__ #warning CONSIDER: Do we really need a seperate rfill function? #endif #ifdef __STDIO_BUFFERS /* Read some data into the buffer. * Returns number of bytes read into the buffer. * If 0 is returned, then either EOF or ERROR. * Side effects are those of _stdio_READ. */ size_t attribute_hidden __stdio_rfill(register FILE *__restrict stream) { size_t rv; __STDIO_STREAM_VALIDATE(stream); assert(stream->__filedes >= -1); assert(__STDIO_STREAM_IS_READING(stream)); assert(!__STDIO_STREAM_BUFFER_RAVAIL(stream)); /* Buffer must be empty. */ assert(__STDIO_STREAM_BUFFER_SIZE(stream)); /* Must have a buffer. */ assert(!(stream->__modeflags & __FLAG_UNGOT)); #ifdef __UCLIBC_HAS_STDIO_GETC_MACRO__ assert(stream->__bufgetc_u == stream->__bufstart); #endif rv = __stdio_READ(stream, stream->__bufstart, stream->__bufend - stream->__bufstart); stream->__bufpos = stream->__bufstart; stream->__bufread = stream->__bufstart + rv; __STDIO_STREAM_VALIDATE(stream); return rv; } #endif