X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2F_PDCLIB_fillbuffer.c;fp=functions%2Fstdio%2F_PDCLIB_fillbuffer.c;h=dfdfe262510d858043e23bfb3a30505271bbb2f0;hb=c5d49235e09fbd58416f10dec2799e61cf3431c8;hp=0000000000000000000000000000000000000000;hpb=4c7c56442f6b3e08c17594dd4e8095fca3aec9cf;p=pdclib diff --git a/functions/stdio/_PDCLIB_fillbuffer.c b/functions/stdio/_PDCLIB_fillbuffer.c new file mode 100644 index 0000000..dfdfe26 --- /dev/null +++ b/functions/stdio/_PDCLIB_fillbuffer.c @@ -0,0 +1,45 @@ +/* _PDCLIB_fillbuffer( struct _PDCLIB_file_t * stream ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include + +#ifndef REGTEST +#include <_PDCLIB_glue.h> + +int _PDCLIB_fillbuffer( struct _PDCLIB_file_t * stream ) +{ + size_t bytesRead; + bool ok = stream->ops->read( stream->handle, stream->buffer, stream->bufsize, + &bytesRead); + + if( ok ) { + if( bytesRead == 0 ) { + stream->status |= _PDCLIB_EOFFLAG; + return EOF; + } + stream->pos.offset += bytesRead; + stream->bufend = bytesRead; + stream->bufidx = 0; + return 0; + } else { + stream->status |= _PDCLIB_ERRORFLAG; + return EOF; + } +} + +#endif + +#ifdef TEST +#include <_PDCLIB_test.h> + +int main( void ) +{ + /* Testing covered by ftell.c */ + return TEST_RESULTS; +} + +#endif +