- if ( ( mode == NULL ) || ( filename[0] == '\0' ) ) return NULL;
- if ( ( stream->status = _PDCLIB_filemode( mode ) ) == 0 ) return NULL;
- stream->handle = _PDCLIB_open( filename, stream->status );
- if ( ( stream->buffer = malloc( BUFSIZ ) ) == NULL ) return NULL;
- stream->bufsize = BUFSIZ;
+ /* FIXME: Copy filename into the FILE structure. */
+ /* FIXME: filename cannot reside in "big block" memory */
+ if ( filename == NULL )
+ {
+ filename = stream->filename;
+ }
+ if ( ( mode == NULL ) || ( filename[0] == '\0' ) )
+ {
+ return NULL;
+ }
+ if ( ( stream->status = _PDCLIB_filemode( mode ) ) == 0 )
+ {
+ return NULL;
+ }
+ /* Re-add the flags we saved above */
+ stream->status |= status;