X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Ffopen.c;h=5bcf5d81fe95d17e9406017676d24ff6a886ebcf;hb=0a419d48138f1411d6e3e50a367b9ece5a2cf893;hp=ff8e8e8a08862ea7679d54d3457d41531c3a7599;hpb=04ff9a4a124eaa87d5d26d90077fb4ed15f3277f;p=pdclib diff --git a/functions/stdio/fopen.c b/functions/stdio/fopen.c index ff8e8e8..5bcf5d8 100644 --- a/functions/stdio/fopen.c +++ b/functions/stdio/fopen.c @@ -10,11 +10,12 @@ #include #ifndef REGTEST +#include <_PDCLIB_io.h> #include <_PDCLIB_glue.h> #include #include -extern struct _PDCLIB_file_t * _PDCLIB_filelist; +extern FILE * _PDCLIB_filelist; FILE * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ) @@ -24,15 +25,16 @@ FILE * fopen( const char * _PDCLIB_restrict filename, if( imode == 0 || filename == NULL ) return NULL; - _PDCLIB_fd_t fd = _PDCLIB_open( filename, imode ); - if(fd == _PDCLIB_NOHANDLE) { + _PDCLIB_fd_t fd; + const _PDCLIB_fileops_t * ops; + if(!_PDCLIB_open( &fd, &ops, filename, imode )) { return NULL; } - FILE * f = _PDCLIB_fdopen( fd, imode, filename ); + FILE * f = _PDCLIB_fvopen( fd, ops, imode, filename ); if(!f) { int saveErrno = errno; - _PDCLIB_close( fd ); + ops->close(fd); errno = saveErrno; } return f;