1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the w64 mingw-runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7 #ifndef _INC_INTERNAL 8 #define _INC_INTERNAL 9 10 #include <crtdefs.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #include <stdarg.h> 17 #include <limits.h> 18 #include <windef.h> 19 #include <winbase.h> 20 21 #ifdef __REACTOS__ 22 #include "malloc.h" 23 struct _exception; 24 __declspec(dllimport) void __cdecl __setusermatherr(int (__cdecl *)(struct _exception *)); 25 #define __mingw_fprintf fprintf 26 #define __mingw_vfprintf vfprintf 27 #endif 28 29 #pragma pack(push,_CRT_PACKING) 30 31 #ifndef __INTERNAL_FUNC_DEFINED 32 #define __INTERNAL_FUNC_DEFINED 33 typedef void (__cdecl *_PVFV)(void); 34 typedef int (__cdecl *_PIFV)(void); 35 typedef void (__cdecl *_PVFI)(int); 36 #endif 37 38 #if defined (SPECIAL_CRTEXE) && (defined (_DLL) || defined (__GNUC__)) 39 extern int _commode; 40 #else 41 _CRTIMP extern int _commode; 42 #endif 43 44 #define __IOINFO_TM_ANSI 0 45 #define __IOINFO_TM_UTF8 1 46 #define __IOINFO_TM_UTF16LE 2 47 48 #ifdef _MSC_VER 49 #pragma warning(push) 50 #pragma warning(disable:4214) 51 #pragma warning(disable:4820) 52 #endif 53 54 typedef struct { 55 intptr_t osfhnd; 56 char osfile; 57 char pipech; 58 int lockinitflag; 59 CRITICAL_SECTION lock; 60 char textmode : 7; 61 char unicode : 1; 62 char pipech2[2]; 63 } ioinfo; 64 65 #ifdef _MSC_VER 66 #pragma warning(pop) 67 #endif 68 69 #define IOINFO_ARRAY_ELTS (1 << 5) 70 71 #define _pioinfo(i) (__pioinfo[(i) >> 5] + ((i) & (IOINFO_ARRAY_ELTS - 1))) 72 #define _osfile(i) (_pioinfo(i)->osfile) 73 #define _pipech2(i) (_pioinfo(i)->pipech2) 74 #define _textmode(i) (_pioinfo(i)->textmode) 75 #define _tm_unicode(i) (_pioinfo(i)->unicode) 76 #define _pioinfo_safe(i) ((((i) != -1) && ((i) != -2)) ? _pioinfo(i) : &__badioinfo) 77 #define _osfhnd_safe(i) (_pioinfo_safe(i)->osfhnd) 78 #define _osfile_safe(i) (_pioinfo_safe(i)->osfile) 79 #define _pipech_safe(i) (_pioinfo_safe(i)->pipech) 80 #define _pipech2_safe(i) (_pioinfo_safe(i)->pipech2) 81 #define _textmode_safe(i) (_pioinfo_safe(i)->textmode) 82 #define _tm_unicode_safe(i) (_pioinfo_safe(i)->unicode) 83 84 #ifndef __badioinfo 85 extern ioinfo ** __MINGW_IMP_SYMBOL(__badioinfo)[]; 86 #define __badioinfo (* __MINGW_IMP_SYMBOL(__badioinfo)) 87 #endif 88 89 #ifndef __pioinfo 90 extern ioinfo ** __MINGW_IMP_SYMBOL(__pioinfo)[]; 91 #define __pioinfo (* __MINGW_IMP_SYMBOL(__pioinfo)) 92 #endif 93 94 #define _NO_CONSOLE_FILENO (intptr_t)-2 95 96 #ifndef _FILE_DEFINED 97 #define _FILE_DEFINED 98 struct _iobuf { 99 char *_ptr; 100 int _cnt; 101 char *_base; 102 int _flag; 103 int _file; 104 int _charbuf; 105 int _bufsiz; 106 char *_tmpfname; 107 }; 108 typedef struct _iobuf FILE; 109 #endif 110 111 #if !defined (_FILEX_DEFINED) && defined (_WINDOWS_) 112 #define _FILEX_DEFINED 113 typedef struct { 114 FILE f; 115 CRITICAL_SECTION lock; 116 } _FILEX; 117 #endif 118 119 extern int _dowildcard; 120 extern int _newmode; 121 122 #ifndef __winitenv 123 extern wchar_t *** __MINGW_IMP_SYMBOL(__winitenv); 124 #define __winitenv (* __MINGW_IMP_SYMBOL(__winitenv)) 125 #endif 126 127 #ifndef __initenv 128 extern char *** __MINGW_IMP_SYMBOL(__initenv); 129 #define __initenv (* __MINGW_IMP_SYMBOL(__initenv)) 130 #endif 131 132 #ifndef _acmdln 133 extern char ** __MINGW_IMP_SYMBOL(_acmdln); 134 #define _acmdln (* __MINGW_IMP_SYMBOL(_acmdln)) 135 /* _CRTIMP extern char *_acmdln; */ 136 #endif 137 138 #ifndef _wcmdln 139 extern char ** __MINGW_IMP_SYMBOL(_wcmdln); 140 #define _wcmdln (* __MINGW_IMP_SYMBOL(_wcmdln)) 141 /* __CRTIMP extern wchar_t *_wcmdln; */ 142 #endif 143 144 _CRTIMP __declspec(noreturn) void __cdecl _amsg_exit(int); 145 146 int __CRTDECL _setargv(void); 147 int __CRTDECL __setargv(void); 148 int __CRTDECL _wsetargv(void); 149 int __CRTDECL __wsetargv(void); 150 151 int __CRTDECL main(int _Argc, char **_Argv, char **_Env); 152 int __CRTDECL wmain(int _Argc, wchar_t **_Argv, wchar_t **_Env); 153 154 #ifndef _STARTUP_INFO_DEFINED 155 #define _STARTUP_INFO_DEFINED 156 typedef struct { 157 int newmode; 158 } _startupinfo; 159 #endif 160 161 _CRTIMP int __cdecl __getmainargs(int * _Argc, char *** _Argv, char ***_Env, int _DoWildCard, _startupinfo *_StartInfo); 162 _CRTIMP int __cdecl __wgetmainargs(int * _Argc, wchar_t ***_Argv, wchar_t ***_Env, int _DoWildCard, _startupinfo *_StartInfo); 163 164 #define _CONSOLE_APP 1 165 #define _GUI_APP 2 166 167 typedef enum __enative_startup_state { 168 __uninitialized = 0, __initializing, __initialized 169 } __enative_startup_state; 170 171 extern volatile __enative_startup_state __native_startup_state; 172 extern volatile void *__native_startup_lock; 173 174 extern volatile unsigned int __native_dllmain_reason; 175 extern volatile unsigned int __native_vcclrit_reason; 176 177 _CRTIMP void __cdecl __set_app_type (int); 178 179 typedef LONG NTSTATUS; 180 181 #include <crtdbg.h> 182 #include <errno.h> 183 184 void * __cdecl _encode_pointer(void *); 185 void * __cdecl _encoded_null(); 186 void * __cdecl _decode_pointer(void *); 187 188 BOOL __cdecl _ValidateImageBase (PBYTE pImageBase); 189 PIMAGE_SECTION_HEADER __cdecl _FindPESection (PBYTE pImageBase, DWORD_PTR rva); 190 BOOL __cdecl _IsNonwritableInCurrentImage (PBYTE pTarget); 191 192 #ifdef __cplusplus 193 } 194 #endif 195 196 #pragma pack(pop) 197 #endif 198