X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Ffopen.c;h=96fdcc19803bb709efa65f28f61107ccb65cf57b;hb=13ee02fa27a739d9d602f801126eadcfbfeab8a8;hp=2abb66407bb9bb7e80eb53dcecd0740148a2697e;hpb=d2c64b8390799b64a24609e689ef87dec9b74dea;p=pdclib diff --git a/functions/stdio/fopen.c b/functions/stdio/fopen.c index 2abb664..96fdcc1 100644 --- a/functions/stdio/fopen.c +++ b/functions/stdio/fopen.c @@ -77,13 +77,14 @@ struct _PDCLIB_file_t * fopen( const char * _PDCLIB_restrict filename, const cha if ( ( rc->status = filemode( mode ) ) == 0 ) goto fail; /* invalid mode */ rc->handle = _PDCLIB_open( filename, rc->status ); if ( rc->handle == _PDCLIB_NOHANDLE ) goto fail; /* OS open() failed */ - /* Adding to list of open files */ rc->next = _PDCLIB_filelist; _PDCLIB_filelist = rc; - /* Setting buffer, and mark as internal. TODO: Check for unbuffered? */ + /* Setting buffer, and mark as internal. TODO: Check for unbuffered */ if ( ( rc->buffer = malloc( BUFSIZ ) ) == NULL ) goto fail; - rc->status |= _PDCLIB_LIBBUFFER; + rc->bufsize = BUFSIZ; + rc->bufidx = 0; + rc->status |= ( _PDCLIB_LIBBUFFER | _PDCLIB_VIRGINSTR ); /* TODO: Setting mbstate */ return rc; fail: @@ -98,6 +99,7 @@ fail: int main( void ) { +#ifndef REGTEST TESTCASE( filemode( "r" ) == _PDCLIB_FREAD ); TESTCASE( filemode( "w" ) == _PDCLIB_FWRITE ); TESTCASE( filemode( "a" ) == _PDCLIB_FAPPEND ); @@ -122,6 +124,9 @@ int main( void ) TESTCASE( fopen( "testfile", "wr" ) == NULL ); /* Illegal mode */ TESTCASE( fopen( "testfile", "w" ) != NULL ); system( "rm testfile" ); +#else + puts( " NOTEST fopen() test driver is PDCLib-specific." ); +#endif return TEST_RESULTS; }