branch update for HEAD-2003021201
[reactos.git] / include / msvcrt / internal / file.h
1 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
2
3 #ifndef __dj_include_libc_file_h__
4 #define __dj_include_libc_file_h__
5
6 #include <msvcrt/stdio.h>
7 #include <msvcrt/fcntl.h>
8
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 #ifndef __dj_ENFORCE_ANSI_FREESTANDING
15 #ifndef __STRICT_ANSI__
16 #ifndef _POSIX_SOURCE
17
18 #ifndef _IORMONCL
19 #define _IORMONCL 004000  /* remove on close, for temp files */
20 #endif
21 /* if _flag & _IORMONCL, ._name_to_remove needs freeing */
22
23 #ifndef _IOUNGETC
24 #define _IOUNGETC 010000  /* there is an ungetc'ed character in the buffer */
25 #endif
26
27 // might need check for IO_APPEND aswell
28 #define OPEN4WRITING(f) ((((f)->_flag & _IOWRT)  == _IOWRT))
29 #define OPEN4READING(f) ((((f)->_flag & _IOREAD) == _IOREAD))
30
31 // might need check for IO_APPEND aswell
32 #define WRITE_STREAM(f) ((((f)->_flag & _IOWRT) == _IOWRT))
33 #define READ_STREAM(f) ((((f)->_flag & _IOREAD) == _IOREAD))
34
35 char __validfp(FILE*);
36 int __set_errno(int err);
37 int __set_doserrno(int error);
38 void* filehnd(int fn);
39 char __is_text_file(FILE*);
40 int __fileno_alloc(void* hFile, int mode);
41 int _doprnt(const char* fmt, va_list args, FILE *);
42 int _doscan(FILE* iop, const char* fmt, va_list argp);
43 int __fileno_dup2(int handle1, int handle2);
44 int __fileno_getmode(int _fd);
45 int __fileno_setmode(int _fd, int _newmode);
46 int __fileno_close(int _fd);
47 void sigabort_handler(int sig);
48
49 #include <windows.h>
50
51 void UnixTimeToFileTime(time_t unix_time, FILETIME* filetime, DWORD remainder);
52 time_t FileTimeToUnixTime(const FILETIME* filetime, DWORD *remainder);
53
54 #endif /* !_POSIX_SOURCE */
55 #endif /* !__STRICT_ANSI__ */
56 #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */
57
58 #ifndef __dj_ENFORCE_FUNCTION_CALLS
59 #endif /* !__dj_ENFORCE_FUNCTION_CALLS */
60
61 #define __FILE_REC_MAX 20
62 typedef struct __file_rec 
63 {
64     struct __file_rec* next;
65     int count;
66     FILE* files[__FILE_REC_MAX];
67 } __file_rec;
68
69 extern __file_rec* __file_rec_list;
70
71
72 #ifdef __cplusplus
73 }
74 #endif
75
76 #endif /* __dj_include_libc_file_h__ */