1 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
3 #ifndef __dj_include_libc_file_h__
4 #define __dj_include_libc_file_h__
6 #include <msvcrt/stdio.h>
7 #include <msvcrt/fcntl.h>
14 #ifndef __dj_ENFORCE_ANSI_FREESTANDING
16 #ifndef __STRICT_ANSI__
21 #define _IORMONCL 004000 /* remove on close, for temp files */
23 /* if _flag & _IORMONCL, ._name_to_remove needs freeing */
26 #define _IOUNGETC 010000 /* there is an ungetc'ed character in the buffer */
30 // might need check for IO_APPEND aswell
31 #define OPEN4WRITING(f) ((((f)->_flag & _IOWRT) == _IOWRT ) )
33 #define OPEN4READING(f) ((((f)->_flag & _IOREAD) == _IOREAD ) )
35 // might need check for IO_APPEND aswell
36 #define WRITE_STREAM(f) ((((f)->_flag & _IOWRT) == _IOWRT ) )
38 #define READ_STREAM(f) ((((f)->_flag & _IOREAD) == _IOREAD ) )
41 char __validfp (FILE *f);
43 int __set_errno(int err);
44 int __set_doserrno (int error);
46 void *filehnd(int fn);
48 char __is_text_file(FILE *p);
50 int __fileno_alloc(void *hFile, int mode);
52 int _doprnt(const char *fmt, va_list args, FILE *f);
53 int _doscan(FILE *iop, const char *fmt, va_list argp);
56 int __fileno_dup2( int handle1, int handle2 );
57 int __fileno_getmode(int _fd);
58 int __fileno_setmode(int _fd, int _newmode);
59 int __fileno_close(int _fd);
61 void sigabort_handler(int sig);
65 void UnixTimeToFileTime( time_t unix_time, FILETIME *filetime, DWORD remainder );
66 time_t FileTimeToUnixTime( const FILETIME *filetime, DWORD *remainder );
69 #endif /* !_POSIX_SOURCE */
70 #endif /* !__STRICT_ANSI__ */
71 #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */
73 #ifndef __dj_ENFORCE_FUNCTION_CALLS
74 #endif /* !__dj_ENFORCE_FUNCTION_CALLS */
77 #define __FILE_REC_MAX 20
78 typedef struct __file_rec
80 struct __file_rec *next;
82 FILE *files[__FILE_REC_MAX];
85 extern __file_rec *__file_rec_list;
93 #endif /* __dj_include_libc_file_h__ */