2000-05-28 13:40:48 +00:00
|
|
|
/*
|
2014-06-30 09:10:35 +00:00
|
|
|
** freopen.c
|
|
|
|
**
|
|
|
|
** Ullrich von Bassewitz, 17.06.1998
|
|
|
|
*/
|
2000-05-28 13:40:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include "_file.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
2003-11-06 18:04:07 +00:00
|
|
|
/*****************************************************************************/
|
2013-05-09 11:56:54 +00:00
|
|
|
/* Code */
|
2003-11-06 18:04:07 +00:00
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FILE* __fastcall__ freopen (const char* name, const char* mode, FILE* f)
|
2000-05-28 13:40:48 +00:00
|
|
|
{
|
|
|
|
/* Check if the file is open, if so, close it */
|
|
|
|
if ((f->f_flags & _FOPEN) == 0) {
|
2013-05-09 11:56:54 +00:00
|
|
|
/* File is not open */
|
2010-06-03 20:27:59 +00:00
|
|
|
return (FILE*) _seterrno (EINVAL); /* File not input */
|
2000-05-28 13:40:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Close the file. Don't bother setting the flag, it will get
|
2014-06-30 09:10:35 +00:00
|
|
|
** overwritten by _fopen.
|
|
|
|
*/
|
2000-05-28 13:40:48 +00:00
|
|
|
if (close (f->f_fd) < 0) {
|
2022-02-21 20:44:31 +00:00
|
|
|
/* An error occurred, errno is already set */
|
2013-05-09 11:56:54 +00:00
|
|
|
return 0;
|
2000-05-28 13:40:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Open the file and return the descriptor */
|
|
|
|
return _fopen (name, mode, f);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|