mirror of
https://github.com/cc65/cc65.git
synced 2024-12-24 11:31:31 +00:00
39 lines
649 B
C
39 lines
649 B
C
|
/*
|
||
|
* freopen.c
|
||
|
*
|
||
|
* Ullrich von Bassewitz, 17.06.1998
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <errno.h>
|
||
|
#include "_file.h"
|
||
|
|
||
|
|
||
|
|
||
|
FILE* freopen (char* name, char* mode, FILE* f)
|
||
|
{
|
||
|
/* Check if the file is open, if so, close it */
|
||
|
if ((f->f_flags & _FOPEN) == 0) {
|
||
|
/* File is not open */
|
||
|
_errno = EINVAL; /* File not input */
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/* Close the file. Don't bother setting the flag, it will get
|
||
|
* overwritten by _fopen.
|
||
|
*/
|
||
|
if (close (f->f_fd) < 0) {
|
||
|
/* An error occured, _oserror is set */
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/* Open the file and return the descriptor */
|
||
|
return _fopen (name, mode, f);
|
||
|
}
|
||
|
|
||
|
|
||
|
|