X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=functions%2Fstdio%2Ffseek.c;h=e3d3e7791836e7e92e25b293a6fe7ec853099fbe;hp=ca0017cacfc02f1fbaaf259be15fd0ca90f1c4a1;hb=393020b6e48719d27699dea6b29e53025bbd5123;hpb=f408c1fd633015089d2a0fc6bc31c9f61eeae0a9 diff --git a/functions/stdio/fseek.c b/functions/stdio/fseek.c index ca0017c..e3d3e77 100644 --- a/functions/stdio/fseek.c +++ b/functions/stdio/fseek.c @@ -1,6 +1,6 @@ /* $Id$ */ -/* fseek( FILE *, long int, int ) +/* fseek( FILE *, long offset, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. @@ -10,14 +10,23 @@ #ifndef REGTEST -int fseek( struct _PDCLIB_file_t * stream, long int offset, int whence ) +#include <_PDCLIB_glue.h> + +int fseek( struct _PDCLIB_file_t * _PDCLIB_restrict stream, long offset, int whence ) { - if ( stream->status & _PDCLIB_WROTELAST ) + if ( stream->status & _PDCLIB_FWRITE ) + { + if ( _PDCLIB_flushbuffer( stream ) == EOF ) + { + return EOF; + } + } + stream->status &= ~ _PDCLIB_EOFFLAG; + if ( stream->status & _PDCLIB_FRW ) { - fflush( stream ); + stream->status &= ~ ( _PDCLIB_FREAD | _PDCLIB_FWRITE ); } - /* TODO: Implement. */ - return 0; + return _PDCLIB_seek( stream, offset, whence ); } #endif @@ -27,8 +36,9 @@ int fseek( struct _PDCLIB_file_t * stream, long int offset, int whence ) int main( void ) { - TESTCASE( NO_TESTDRIVER ); + /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif +