X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Ffreopen.c;h=10d797b8f5777ac4e50eb7012ac5d54e56f0fc32;hb=3a988bf47bda2322d7759d3c4518c03e0ef98ba4;hp=741731b9990b8b4b3dcfdbb46860812ac91afd16;hpb=d69469f15e30e4ee7cd8f11edd7ad87196a92d44;p=pdclib diff --git a/functions/stdio/freopen.c b/functions/stdio/freopen.c index 741731b..10d797b 100644 --- a/functions/stdio/freopen.c +++ b/functions/stdio/freopen.c @@ -1,5 +1,3 @@ -/* $Id$ */ - /* freopen( const char *, const char *, FILE * ) This file is part of the Public Domain C Library (PDCLib). @@ -9,17 +7,18 @@ #include #ifndef REGTEST - +#include <_PDCLIB_io.h> #include <_PDCLIB_glue.h> #include #include -struct _PDCLIB_file_t * freopen( - const char * _PDCLIB_restrict filename, - const char * _PDCLIB_restrict mode, - struct _PDCLIB_file_t * _PDCLIB_restrict stream ) +FILE * freopen( + const char * _PDCLIB_restrict filename, + const char * _PDCLIB_restrict mode, + FILE * _PDCLIB_restrict stream +) { - flockfile( stream ); + _PDCLIB_flockfile( stream ); unsigned int status = stream->status & ( _IONBF | _IOLBF | _IOFBF | _PDCLIB_FREEBUFFER @@ -33,7 +32,7 @@ struct _PDCLIB_file_t * freopen( if ( ( filename == NULL ) && ( stream->filename == NULL ) ) { /* TODO: Special handling for mode changes on std-streams */ - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return NULL; } stream->ops->close(stream->handle); @@ -42,7 +41,7 @@ struct _PDCLIB_file_t * freopen( It does not matter with the current implementation of clearerr(), but it might start to matter if someone replaced that implementation. */ - clearerr( stream ); + _PDCLIB_clearerr_unlocked( stream ); /* The new filename might not fit the old buffer */ if ( filename == NULL ) { @@ -59,19 +58,19 @@ struct _PDCLIB_file_t * freopen( /* Allocate new buffer */ if ( ( stream->filename = (char *)malloc( strlen( filename ) ) ) == NULL ) { - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return NULL; } strcpy( stream->filename, filename ); } if ( ( mode == NULL ) || ( filename[0] == '\0' ) ) { - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return NULL; } if ( ( stream->status = _PDCLIB_filemode( mode ) ) == 0 ) { - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return NULL; } /* Re-add the flags we saved above */ @@ -83,10 +82,10 @@ struct _PDCLIB_file_t * freopen( if ( ! _PDCLIB_open( &stream->handle, &stream->ops, filename, stream->status ) ) { - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return NULL; } - funlockfile( stream ); + _PDCLIB_funlockfile( stream ); return stream; }