Kai Tietz | 9d937a7 | 2007-08-10 10:41:48 +0000 | [diff] [blame] | 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. |
Kai Tietz | d42ac88 | 2010-01-15 20:17:42 +0000 | [diff] [blame] | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
Kai Tietz | 9d937a7 | 2007-08-10 10:41:48 +0000 | [diff] [blame] | 5 | */ |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 6 | #ifndef _INC_STDLIB |
| 7 | #define _INC_STDLIB |
| 8 | |
| 9 | #include <_mingw.h> |
| 10 | #include <limits.h> |
| 11 | |
| 12 | #pragma pack(push,_CRT_PACKING) |
| 13 | |
| 14 | #ifdef __cplusplus |
| 15 | extern "C" { |
| 16 | #endif |
| 17 | |
| 18 | #ifndef NULL |
| 19 | #ifdef __cplusplus |
Ozkan Sezer | c6f4772 | 2009-08-14 19:49:43 +0000 | [diff] [blame] | 20 | #ifndef _WIN64 |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 21 | #define NULL 0 |
| 22 | #else |
Ozkan Sezer | c6f4772 | 2009-08-14 19:49:43 +0000 | [diff] [blame] | 23 | #define NULL 0LL |
| 24 | #endif /* W64 */ |
| 25 | #else |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 26 | #define NULL ((void *)0) |
| 27 | #endif |
| 28 | #endif |
| 29 | |
| 30 | #define EXIT_SUCCESS 0 |
| 31 | #define EXIT_FAILURE 1 |
| 32 | |
| 33 | #ifndef _ONEXIT_T_DEFINED |
| 34 | #define _ONEXIT_T_DEFINED |
| 35 | |
| 36 | typedef int (__cdecl *_onexit_t)(void); |
| 37 | |
| 38 | #ifndef NO_OLDNAMES |
| 39 | #define onexit_t _onexit_t |
| 40 | #endif |
| 41 | #endif |
| 42 | |
| 43 | #ifndef _DIV_T_DEFINED |
| 44 | #define _DIV_T_DEFINED |
| 45 | |
| 46 | typedef struct _div_t { |
| 47 | int quot; |
| 48 | int rem; |
| 49 | } div_t; |
| 50 | |
| 51 | typedef struct _ldiv_t { |
| 52 | long quot; |
| 53 | long rem; |
| 54 | } ldiv_t; |
| 55 | #endif |
| 56 | |
| 57 | #ifndef _CRT_DOUBLE_DEC |
Kai Tietz | b21eb36 | 2007-08-17 09:54:07 +0000 | [diff] [blame] | 58 | #define _CRT_DOUBLE_DEC |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 59 | |
| 60 | #pragma pack(4) |
| 61 | typedef struct { |
| 62 | unsigned char ld[10]; |
| 63 | } _LDOUBLE; |
| 64 | #pragma pack() |
| 65 | |
| 66 | #define _PTR_LD(x) ((unsigned char *)(&(x)->ld)) |
| 67 | |
| 68 | typedef struct { |
| 69 | double x; |
| 70 | } _CRT_DOUBLE; |
| 71 | |
| 72 | typedef struct { |
| 73 | float f; |
| 74 | } _CRT_FLOAT; |
| 75 | |
| 76 | #pragma push_macro("long") |
| 77 | #undef long |
| 78 | |
| 79 | typedef struct { |
| 80 | long double x; |
| 81 | } _LONGDOUBLE; |
| 82 | |
| 83 | #pragma pop_macro("long") |
| 84 | |
| 85 | #pragma pack(4) |
| 86 | typedef struct { |
| 87 | unsigned char ld12[12]; |
| 88 | } _LDBL12; |
| 89 | #pragma pack() |
| 90 | #endif |
| 91 | |
| 92 | #define RAND_MAX 0x7fff |
| 93 | |
| 94 | #ifndef MB_CUR_MAX |
| 95 | #define MB_CUR_MAX ___mb_cur_max_func() |
| 96 | #ifndef __mb_cur_max |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 97 | #ifdef _MSVCRT_ |
| 98 | extern int __mb_cur_max; |
Ozkan Sezer | 1b598a8 | 2011-05-23 09:33:23 +0000 | [diff] [blame] | 99 | #define __mb_cur_max __mb_cur_max |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 100 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 101 | extern int * __MINGW_IMP_SYMBOL(__mb_cur_max); |
| 102 | #define __mb_cur_max (* __MINGW_IMP_SYMBOL(__mb_cur_max)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 103 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 104 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 105 | #define ___mb_cur_max_func() (__mb_cur_max) |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 106 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 107 | |
| 108 | #define __max(a,b) (((a) > (b)) ? (a) : (b)) |
| 109 | #define __min(a,b) (((a) < (b)) ? (a) : (b)) |
| 110 | |
| 111 | #define _MAX_PATH 260 |
| 112 | #define _MAX_DRIVE 3 |
| 113 | #define _MAX_DIR 256 |
| 114 | #define _MAX_FNAME 256 |
| 115 | #define _MAX_EXT 256 |
| 116 | |
| 117 | #define _OUT_TO_DEFAULT 0 |
| 118 | #define _OUT_TO_STDERR 1 |
| 119 | #define _OUT_TO_MSGBOX 2 |
| 120 | #define _REPORT_ERRMODE 3 |
| 121 | |
| 122 | #define _WRITE_ABORT_MSG 0x1 |
| 123 | #define _CALL_REPORTFAULT 0x2 |
| 124 | |
| 125 | #define _MAX_ENV 32767 |
| 126 | |
| 127 | typedef void (__cdecl *_purecall_handler)(void); |
| 128 | |
| 129 | _CRTIMP _purecall_handler __cdecl _set_purecall_handler(_purecall_handler _Handler); |
Kai Tietz | 401adef | 2008-10-28 15:12:13 +0000 | [diff] [blame] | 130 | _CRTIMP _purecall_handler __cdecl _get_purecall_handler(void); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 131 | |
| 132 | typedef void (__cdecl *_invalid_parameter_handler)(const wchar_t *,const wchar_t *,const wchar_t *,unsigned int,uintptr_t); |
| 133 | _invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler _Handler); |
| 134 | _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void); |
| 135 | |
| 136 | #ifndef _CRT_ERRNO_DEFINED |
| 137 | #define _CRT_ERRNO_DEFINED |
| 138 | _CRTIMP extern int *__cdecl _errno(void); |
| 139 | #define errno (*_errno()) |
| 140 | errno_t __cdecl _set_errno(int _Value); |
| 141 | errno_t __cdecl _get_errno(int *_Value); |
| 142 | #endif |
| 143 | _CRTIMP unsigned long *__cdecl __doserrno(void); |
| 144 | #define _doserrno (*__doserrno()) |
| 145 | errno_t __cdecl _set_doserrno(unsigned long _Value); |
| 146 | errno_t __cdecl _get_doserrno(unsigned long *_Value); |
Kai Tietz | a4c2789 | 2008-08-27 13:02:24 +0000 | [diff] [blame] | 147 | #ifdef _MSVCRT_ |
| 148 | extern char *_sys_errlist[]; |
| 149 | extern int _sys_nerr; |
| 150 | #else |
Kai Tietz | f78a105 | 2009-01-27 19:23:21 +0000 | [diff] [blame] | 151 | extern _CRTIMP char *_sys_errlist[1]; |
| 152 | extern _CRTIMP int _sys_nerr; |
Kai Tietz | a4c2789 | 2008-08-27 13:02:24 +0000 | [diff] [blame] | 153 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 154 | #if (defined(_X86_) && !defined(__x86_64)) |
| 155 | _CRTIMP int *__cdecl __p___argc(void); |
| 156 | _CRTIMP char ***__cdecl __p___argv(void); |
| 157 | _CRTIMP wchar_t ***__cdecl __p___wargv(void); |
| 158 | _CRTIMP char ***__cdecl __p__environ(void); |
| 159 | _CRTIMP wchar_t ***__cdecl __p__wenviron(void); |
| 160 | _CRTIMP char **__cdecl __p__pgmptr(void); |
| 161 | _CRTIMP wchar_t **__cdecl __p__wpgmptr(void); |
| 162 | #endif |
| 163 | #ifndef __argc |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 164 | #ifdef _MSVCRT_ |
| 165 | extern int __argc; |
| 166 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 167 | extern int * __MINGW_IMP_SYMBOL(__argc); |
| 168 | #define __argc (* __MINGW_IMP_SYMBOL(__argc)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 169 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 170 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 171 | #ifndef __argv |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 172 | #ifdef _MSVCRT_ |
| 173 | extern char **__argv; |
| 174 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 175 | extern char *** __MINGW_IMP_SYMBOL(__argv); |
| 176 | #define __argv (* __MINGW_IMP_SYMBOL(__argv)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 177 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 178 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 179 | #ifndef __wargv |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 180 | #ifdef _MSVCRT_ |
| 181 | extern wchar_t **__wargv; |
| 182 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 183 | extern wchar_t *** __MINGW_IMP_SYMBOL(__wargv); |
| 184 | #define __wargv (* __MINGW_IMP_SYMBOL(__wargv)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 185 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 186 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 187 | |
| 188 | #ifdef _POSIX_ |
| 189 | extern char **environ; |
| 190 | #else |
| 191 | #ifndef _environ |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 192 | #ifdef _MSVCRT_ |
| 193 | extern char **_environ; |
| 194 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 195 | extern char *** __MINGW_IMP_SYMBOL(_environ); |
| 196 | #define _environ (* __MINGW_IMP_SYMBOL(_environ)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 197 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 198 | #endif |
| 199 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 200 | #ifndef _wenviron |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 201 | #ifdef _MSVCRT_ |
| 202 | extern wchar_t **_wenviron; |
| 203 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 204 | extern wchar_t *** __MINGW_IMP_SYMBOL(_wenviron); |
| 205 | #define _wenviron (* __MINGW_IMP_SYMBOL(_wenviron)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 206 | #endif |
| 207 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 208 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 209 | #ifndef _pgmptr |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 210 | #ifdef _MSVCRT_ |
| 211 | extern char *_pgmptr; |
| 212 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 213 | extern char ** __MINGW_IMP_SYMBOL(_pgmptr); |
| 214 | #define _pgmptr (* __MINGW_IMP_SYMBOL(_pgmptr)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 215 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 216 | #endif |
| 217 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 218 | #ifndef _wpgmptr |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 219 | #ifdef _MSVCRT_ |
| 220 | extern wchar_t *_wpgmptr; |
| 221 | #else |
Ozkan Sezer | 5fa85ae | 2009-03-28 18:03:42 +0000 | [diff] [blame] | 222 | extern wchar_t ** __MINGW_IMP_SYMBOL(_wpgmptr); |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 223 | #define _wpgmptr (* __MINGW_IMP_SYMBOL(_wpgmptr)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 224 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 225 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 226 | errno_t __cdecl _get_pgmptr(char **_Value); |
| 227 | errno_t __cdecl _get_wpgmptr(wchar_t **_Value); |
| 228 | #ifndef _fmode |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 229 | #ifdef _MSVCRT_ |
| 230 | extern int _fmode; |
| 231 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 232 | extern int * __MINGW_IMP_SYMBOL(_fmode); |
| 233 | #define _fmode (* __MINGW_IMP_SYMBOL(_fmode)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 234 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 235 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 236 | _CRTIMP errno_t __cdecl _set_fmode(int _Mode); |
| 237 | _CRTIMP errno_t __cdecl _get_fmode(int *_PMode); |
| 238 | |
| 239 | #ifndef _osplatform |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 240 | #ifdef _MSVCRT_ |
| 241 | extern unsigned int _osplatform; |
| 242 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 243 | extern unsigned int * __MINGW_IMP_SYMBOL(_osplatform); |
| 244 | #define _osplatform (* __MINGW_IMP_SYMBOL(_osplatform)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 245 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 246 | #endif |
| 247 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 248 | #ifndef _osver |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 249 | #ifdef _MSVCRT_ |
| 250 | extern unsigned int _osver; |
| 251 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 252 | extern unsigned int * __MINGW_IMP_SYMBOL(_osver); |
| 253 | #define _osver (* __MINGW_IMP_SYMBOL(_osver)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 254 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 255 | #endif |
| 256 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 257 | #ifndef _winver |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 258 | #ifdef _MSVCRT_ |
| 259 | extern unsigned int _winver; |
| 260 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 261 | extern unsigned int * __MINGW_IMP_SYMBOL(_winver); |
| 262 | #define _winver (* __MINGW_IMP_SYMBOL(_winver)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 263 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 264 | #endif |
| 265 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 266 | #ifndef _winmajor |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 267 | #ifdef _MSVCRT_ |
| 268 | extern unsigned int _winmajor; |
| 269 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 270 | extern unsigned int * __MINGW_IMP_SYMBOL(_winmajor); |
| 271 | #define _winmajor (* __MINGW_IMP_SYMBOL(_winmajor)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 272 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 273 | #endif |
| 274 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 275 | #ifndef _winminor |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 276 | #ifdef _MSVCRT_ |
| 277 | extern unsigned int _winminor; |
| 278 | #else |
Kai Tietz | 5097083 | 2009-03-28 12:35:26 +0000 | [diff] [blame] | 279 | extern unsigned int * __MINGW_IMP_SYMBOL(_winminor); |
| 280 | #define _winminor (* __MINGW_IMP_SYMBOL(_winminor)) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 281 | #endif |
Kai Tietz | f30b655 | 2008-08-27 11:48:54 +0000 | [diff] [blame] | 282 | #endif |
| 283 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 284 | errno_t __cdecl _get_osplatform(unsigned int *_Value); |
| 285 | errno_t __cdecl _get_osver(unsigned int *_Value); |
| 286 | errno_t __cdecl _get_winver(unsigned int *_Value); |
| 287 | errno_t __cdecl _get_winmajor(unsigned int *_Value); |
| 288 | errno_t __cdecl _get_winminor(unsigned int *_Value); |
| 289 | #ifndef _countof |
| 290 | #ifndef __cplusplus |
| 291 | #define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0])) |
| 292 | #else |
| 293 | extern "C++" { |
| 294 | template <typename _CountofType,size_t _SizeOfArray> char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray]; |
| 295 | #define _countof(_Array) sizeof(*__countof_helper(_Array)) |
| 296 | } |
| 297 | #endif |
| 298 | #endif |
| 299 | |
| 300 | #ifndef _CRT_TERMINATE_DEFINED |
| 301 | #define _CRT_TERMINATE_DEFINED |
Kai Tietz | 642029e | 2008-12-18 00:57:02 +0000 | [diff] [blame] | 302 | void __cdecl __MINGW_NOTHROW exit(int _Code) __MINGW_ATTRIB_NORETURN; |
Kai Tietz | 7fb6bce | 2012-06-15 13:45:38 +0000 | [diff] [blame] | 303 | void __cdecl __MINGW_NOTHROW _exit(int _Code) __MINGW_ATTRIB_NORETURN; |
Kai Tietz | 8b8f0da | 2010-07-15 11:49:42 +0000 | [diff] [blame] | 304 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 305 | #if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */ |
| 306 | /* C99 function name */ |
Kai Tietz | 642029e | 2008-12-18 00:57:02 +0000 | [diff] [blame] | 307 | void __cdecl _Exit(int) __MINGW_ATTRIB_NORETURN; |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 308 | #ifndef __CRT__NO_INLINE |
Kai Tietz | 1ebf60c | 2008-12-18 20:44:00 +0000 | [diff] [blame] | 309 | __CRT_INLINE __MINGW_ATTRIB_NORETURN void __cdecl _Exit(int status) |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 310 | { _exit(status); } |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 311 | #endif /* !__CRT__NO_INLINE */ |
Ozkan Sezer | ef83ddc | 2010-07-15 13:26:19 +0000 | [diff] [blame] | 312 | #endif /* Not __NO_ISOCEXT */ |
Kai Tietz | 7662727 | 2007-10-12 06:54:59 +0000 | [diff] [blame] | 313 | |
| 314 | #pragma push_macro("abort") |
| 315 | #undef abort |
Kai Tietz | b501b91 | 2008-03-20 09:13:53 +0000 | [diff] [blame] | 316 | void __cdecl __declspec(noreturn) abort(void); |
Kai Tietz | 7662727 | 2007-10-12 06:54:59 +0000 | [diff] [blame] | 317 | #pragma pop_macro("abort") |
| 318 | |
Ozkan Sezer | ef83ddc | 2010-07-15 13:26:19 +0000 | [diff] [blame] | 319 | #endif /* _CRT_TERMINATE_DEFINED */ |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 320 | |
| 321 | _CRTIMP unsigned int __cdecl _set_abort_behavior(unsigned int _Flags,unsigned int _Mask); |
| 322 | |
| 323 | #ifndef _CRT_ABS_DEFINED |
| 324 | #define _CRT_ABS_DEFINED |
| 325 | int __cdecl abs(int _X); |
| 326 | long __cdecl labs(long _X); |
| 327 | #endif |
| 328 | |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 329 | __MINGW_EXTENSION __int64 __cdecl _abs64(__int64); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 330 | int __cdecl atexit(void (__cdecl *)(void)); |
| 331 | #ifndef _CRT_ATOF_DEFINED |
| 332 | #define _CRT_ATOF_DEFINED |
Kai Tietz | d56bc12 | 2007-10-18 09:03:49 +0000 | [diff] [blame] | 333 | double __cdecl atof(const char *_String); |
| 334 | double __cdecl _atof_l(const char *_String,_locale_t _Locale); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 335 | #endif |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 336 | int __cdecl atoi(const char *_Str); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 337 | _CRTIMP int __cdecl _atoi_l(const char *_Str,_locale_t _Locale); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 338 | long __cdecl atol(const char *_Str); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 339 | _CRTIMP long __cdecl _atol_l(const char *_Str,_locale_t _Locale); |
| 340 | #ifndef _CRT_ALGO_DEFINED |
| 341 | #define _CRT_ALGO_DEFINED |
Kai Tietz | 0884bf1 | 2007-10-16 12:42:57 +0000 | [diff] [blame] | 342 | void *__cdecl bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *)); |
| 343 | void __cdecl qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__cdecl *_PtFuncCompare)(const void *,const void *)); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 344 | #endif |
| 345 | unsigned short __cdecl _byteswap_ushort(unsigned short _Short); |
Jacek Caban | 59b884a | 2012-05-25 09:53:37 +0000 | [diff] [blame] | 346 | unsigned long __cdecl _byteswap_ulong (unsigned long _Long); |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 347 | __MINGW_EXTENSION unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 348 | div_t __cdecl div(int _Numerator,int _Denominator); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 349 | char *__cdecl getenv(const char *_VarName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 350 | _CRTIMP char *__cdecl _itoa(int _Value,char *_Dest,int _Radix); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 351 | __MINGW_EXTENSION _CRTIMP char *__cdecl _i64toa(__int64 _Val,char *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 352 | __MINGW_EXTENSION _CRTIMP char *__cdecl _ui64toa(unsigned __int64 _Val,char *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 353 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _atoi64(const char *_String); |
| 354 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _atoi64_l(const char *_String,_locale_t _Locale); |
| 355 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _strtoi64(const char *_String,char **_EndPtr,int _Radix); |
| 356 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale); |
| 357 | __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _strtoui64(const char *_String,char **_EndPtr,int _Radix); |
| 358 | __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 359 | ldiv_t __cdecl ldiv(long _Numerator,long _Denominator); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 360 | _CRTIMP char *__cdecl _ltoa(long _Value,char *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 361 | int __cdecl mblen(const char *_Ch,size_t _MaxCount); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 362 | _CRTIMP int __cdecl _mblen_l(const char *_Ch,size_t _MaxCount,_locale_t _Locale); |
| 363 | _CRTIMP size_t __cdecl _mbstrlen(const char *_Str); |
| 364 | _CRTIMP size_t __cdecl _mbstrlen_l(const char *_Str,_locale_t _Locale); |
| 365 | _CRTIMP size_t __cdecl _mbstrnlen(const char *_Str,size_t _MaxCount); |
| 366 | _CRTIMP size_t __cdecl _mbstrnlen_l(const char *_Str,size_t _MaxCount,_locale_t _Locale); |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 367 | int __cdecl mbtowc(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes); |
| 368 | _CRTIMP int __cdecl _mbtowc_l(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes,_locale_t _Locale); |
| 369 | size_t __cdecl mbstowcs(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount); |
| 370 | _CRTIMP size_t __cdecl _mbstowcs_l(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 371 | int __cdecl rand(void); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 372 | _CRTIMP int __cdecl _set_error_mode(int _Mode); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 373 | void __cdecl srand(unsigned int _Seed); |
Kai Tietz | 7359840 | 2010-01-15 17:53:15 +0000 | [diff] [blame] | 374 | #ifdef _CRT_RAND_S |
| 375 | _CRTIMP errno_t __cdecl rand_s(unsigned int *randomValue); |
| 376 | #endif |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 377 | double __cdecl __MINGW_NOTHROW strtod(const char * __restrict__ _Str,char ** __restrict__ _EndPtr); |
| 378 | float __cdecl __MINGW_NOTHROW strtof(const char * __restrict__ nptr, char ** __restrict__ endptr); |
| 379 | long double __cdecl __MINGW_NOTHROW strtold(const char * __restrict__ , char ** __restrict__ ); |
Kai Tietz | 94db020 | 2010-07-10 18:38:20 +0000 | [diff] [blame] | 380 | #if !defined __NO_ISOCEXT |
Kai Tietz | e348f30 | 2010-07-10 18:28:11 +0000 | [diff] [blame] | 381 | /* libmingwex.a provides a c99-compliant strtod() exported as __strtod() */ |
Kai Tietz | 94db020 | 2010-07-10 18:38:20 +0000 | [diff] [blame] | 382 | extern double __cdecl __MINGW_NOTHROW |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 383 | __strtod (const char * __restrict__ , char ** __restrict__); |
Kai Tietz | 94db020 | 2010-07-10 18:38:20 +0000 | [diff] [blame] | 384 | #ifdef __cplusplus |
| 385 | __inline__ double __cdecl __MINGW_NOTHROW |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 386 | strtod (const char * __restrict__ __nptr, char ** __restrict__ __endptr) |
Kai Tietz | 94db020 | 2010-07-10 18:38:20 +0000 | [diff] [blame] | 387 | { |
| 388 | return __strtod(__nptr, __endptr); |
| 389 | } |
| 390 | #endif |
Kai Tietz | e348f30 | 2010-07-10 18:28:11 +0000 | [diff] [blame] | 391 | #define strtod __strtod |
Kai Tietz | 94db020 | 2010-07-10 18:38:20 +0000 | [diff] [blame] | 392 | #endif /* __NO_ISOCEXT */ |
| 393 | |
NightStrike | adb61c9 | 2008-04-28 15:49:51 +0000 | [diff] [blame] | 394 | #if !defined __NO_ISOCEXT /* in libmingwex.a */ |
Ozkan Sezer | c8ed1a4 | 2009-04-20 13:48:53 +0000 | [diff] [blame] | 395 | float __cdecl __mingw_strtof (const char * __restrict__, char ** __restrict__); |
| 396 | long double __cdecl __mingw_strtold(const char * __restrict__, char ** __restrict__); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 397 | #endif /* __NO_ISOCEXT */ |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 398 | _CRTIMP double __cdecl _strtod_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,_locale_t _Locale); |
| 399 | long __cdecl strtol(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix); |
| 400 | _CRTIMP long __cdecl _strtol_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); |
| 401 | unsigned long __cdecl strtoul(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix); |
| 402 | _CRTIMP unsigned long __cdecl _strtoul_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 403 | #ifndef _CRT_SYSTEM_DEFINED |
| 404 | #define _CRT_SYSTEM_DEFINED |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 405 | int __cdecl system(const char *_Command); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 406 | #endif |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 407 | _CRTIMP char *__cdecl _ultoa(unsigned long _Value,char *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 408 | int __cdecl wctomb(char *_MbCh,wchar_t _WCh) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 409 | _CRTIMP int __cdecl _wctomb_l(char *_MbCh,wchar_t _WCh,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 410 | size_t __cdecl wcstombs(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 411 | _CRTIMP size_t __cdecl _wcstombs_l(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 412 | |
| 413 | #ifndef _CRT_ALLOCATION_DEFINED |
| 414 | #define _CRT_ALLOCATION_DEFINED |
Kai Tietz | 6bd9073 | 2007-10-15 10:36:06 +0000 | [diff] [blame] | 415 | void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements); |
| 416 | void __cdecl free(void *_Memory); |
| 417 | void *__cdecl malloc(size_t _Size); |
| 418 | void *__cdecl realloc(void *_Memory,size_t _NewSize); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 419 | _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size); |
Kai Tietz | 60bec77 | 2009-09-08 13:06:20 +0000 | [diff] [blame] | 420 | /* Make sure that X86intrin.h doesn't produce here collisions. */ |
Kai Tietz | 973cda4 | 2010-04-17 13:16:56 +0000 | [diff] [blame] | 421 | #if (!defined (_XMMINTRIN_H_INCLUDED) && !defined (_MM_MALLOC_H_INCLUDED)) || defined(_aligned_malloc) |
Kai Tietz | 60bec77 | 2009-09-08 13:06:20 +0000 | [diff] [blame] | 422 | #pragma push_macro("_aligned_free") |
| 423 | #pragma push_macro("_aligned_malloc") |
| 424 | #undef _aligned_free |
| 425 | #undef _aligned_malloc |
Kai Tietz | 677cbe2 | 2009-09-08 09:39:55 +0000 | [diff] [blame] | 426 | _CRTIMP void __cdecl _aligned_free(void *_Memory); |
| 427 | _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment); |
Kai Tietz | 60bec77 | 2009-09-08 13:06:20 +0000 | [diff] [blame] | 428 | #pragma pop_macro("_aligned_free") |
| 429 | #pragma pop_macro("_aligned_malloc") |
Kai Tietz | 05683f7 | 2010-04-17 12:36:57 +0000 | [diff] [blame] | 430 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 431 | _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset); |
| 432 | _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment); |
| 433 | _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment); |
| 434 | _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset); |
| 435 | _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset); |
| 436 | #endif |
| 437 | |
| 438 | #ifndef _WSTDLIB_DEFINED |
Kai Tietz | b21eb36 | 2007-08-17 09:54:07 +0000 | [diff] [blame] | 439 | #define _WSTDLIB_DEFINED |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 440 | |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 441 | _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 442 | _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 443 | _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 444 | double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); |
| 445 | float __cdecl wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); |
Kai Tietz | 1672408 | 2011-02-01 10:34:38 +0000 | [diff] [blame] | 446 | |
| 447 | double __cdecl __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); |
| 448 | float __cdecl __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); |
| 449 | long double __cdecl __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); |
| 450 | |
NightStrike | adb61c9 | 2008-04-28 15:49:51 +0000 | [diff] [blame] | 451 | #if !defined __NO_ISOCEXT /* in libmingwex.a */ |
| 452 | float __cdecl wcstof( const wchar_t * __restrict__, wchar_t ** __restrict__); |
Kai Tietz | 63751b6 | 2007-10-29 12:22:14 +0000 | [diff] [blame] | 453 | long double __cdecl wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 454 | #endif /* __NO_ISOCEXT */ |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 455 | _CRTIMP double __cdecl _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale); |
| 456 | long __cdecl wcstol(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix); |
| 457 | _CRTIMP long __cdecl _wcstol_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); |
| 458 | unsigned long __cdecl wcstoul(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix); |
| 459 | _CRTIMP unsigned long __cdecl _wcstoul_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 460 | _CRTIMP wchar_t *__cdecl _wgetenv(const wchar_t *_VarName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 461 | #ifndef _CRT_WSYSTEM_DEFINED |
| 462 | #define _CRT_WSYSTEM_DEFINED |
| 463 | _CRTIMP int __cdecl _wsystem(const wchar_t *_Command); |
| 464 | #endif |
| 465 | _CRTIMP double __cdecl _wtof(const wchar_t *_Str); |
| 466 | _CRTIMP double __cdecl _wtof_l(const wchar_t *_Str,_locale_t _Locale); |
| 467 | _CRTIMP int __cdecl _wtoi(const wchar_t *_Str); |
| 468 | _CRTIMP int __cdecl _wtoi_l(const wchar_t *_Str,_locale_t _Locale); |
| 469 | _CRTIMP long __cdecl _wtol(const wchar_t *_Str); |
| 470 | _CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale); |
| 471 | |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 472 | __MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 473 | __MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 474 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str); |
| 475 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale); |
| 476 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix); |
| 477 | __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale); |
| 478 | __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix); |
| 479 | __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 480 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 481 | |
| 482 | #ifndef _POSIX_ |
| 483 | #define _CVTBUFSIZE (309+40) |
| 484 | _CRTIMP char *__cdecl _fullpath(char *_FullPath,const char *_Path,size_t _SizeInBytes); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 485 | _CRTIMP char *__cdecl _ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 486 | _CRTIMP char *__cdecl _fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 487 | _CRTIMP char *__cdecl _gcvt(double _Val,int _NumOfDigits,char *_DstBuf) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 488 | _CRTIMP int __cdecl _atodbl(_CRT_DOUBLE *_Result,char *_Str); |
| 489 | _CRTIMP int __cdecl _atoldbl(_LDOUBLE *_Result,char *_Str); |
| 490 | _CRTIMP int __cdecl _atoflt(_CRT_FLOAT *_Result,char *_Str); |
| 491 | _CRTIMP int __cdecl _atodbl_l(_CRT_DOUBLE *_Result,char *_Str,_locale_t _Locale); |
| 492 | _CRTIMP int __cdecl _atoldbl_l(_LDOUBLE *_Result,char *_Str,_locale_t _Locale); |
| 493 | _CRTIMP int __cdecl _atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 494 | #pragma push_macro ("_lrotr") |
| 495 | #pragma push_macro ("_lrotl") |
| 496 | #undef _lrotr |
| 497 | #undef _lrotl |
| 498 | #ifdef __x86_64__ |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 499 | __MINGW_EXTENSION unsigned long long __cdecl _lrotl(unsigned long long _Val,int _Shift); |
| 500 | __MINGW_EXTENSION unsigned long long __cdecl _lrotr(unsigned long long _Val,int _Shift); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 501 | #else |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 502 | unsigned long __cdecl _lrotl(unsigned long _Val,int _Shift); |
| 503 | unsigned long __cdecl _lrotr(unsigned long _Val,int _Shift); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 504 | #endif |
| 505 | #pragma pop_macro ("_lrotl") |
| 506 | #pragma pop_macro ("_lrotr") |
| 507 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 508 | _CRTIMP void __cdecl _makepath(char *_Path,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext); |
| 509 | _onexit_t __cdecl _onexit(_onexit_t _Func); |
| 510 | |
| 511 | #ifndef _CRT_PERROR_DEFINED |
| 512 | #define _CRT_PERROR_DEFINED |
Kai Tietz | 7fbd8c7 | 2007-10-16 14:38:02 +0000 | [diff] [blame] | 513 | void __cdecl perror(const char *_ErrMsg); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 514 | #endif |
| 515 | _CRTIMP int __cdecl _putenv(const char *_EnvString); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 516 | #pragma push_macro ("_rotr64") |
| 517 | #pragma push_macro ("_rotl64") |
| 518 | #undef _rotl64 |
| 519 | #undef _rotr64 |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 520 | __MINGW_EXTENSION unsigned __int64 __cdecl _rotl64(unsigned __int64 _Val,int _Shift); |
| 521 | __MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64 Value,int Shift); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 522 | #pragma pop_macro ("_rotl64") |
| 523 | #pragma pop_macro ("_rotr64") |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 524 | #pragma push_macro ("_rotr") |
| 525 | #pragma push_macro ("_rotl") |
| 526 | #undef _rotr |
| 527 | #undef _rotl |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 528 | unsigned int __cdecl _rotr(unsigned int _Val,int _Shift); |
Kai Tietz | 9312633 | 2009-08-23 16:52:19 +0000 | [diff] [blame] | 529 | unsigned int __cdecl _rotl(unsigned int _Val,int _Shift); |
| 530 | #pragma pop_macro ("_rotl") |
| 531 | #pragma pop_macro ("_rotr") |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 532 | __MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64 _Val,int _Shift); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 533 | _CRTIMP void __cdecl _searchenv(const char *_Filename,const char *_EnvVar,char *_ResultPath) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 534 | _CRTIMP void __cdecl _splitpath(const char *_FullPath,char *_Drive,char *_Dir,char *_Filename,char *_Ext) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 535 | _CRTIMP void __cdecl _swab(char *_Buf1,char *_Buf2,int _SizeInBytes); |
| 536 | |
| 537 | #ifndef _WSTDLIBP_DEFINED |
| 538 | #define _WSTDLIBP_DEFINED |
| 539 | _CRTIMP wchar_t *__cdecl _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 540 | _CRTIMP void __cdecl _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext); |
| 541 | #ifndef _CRT_WPERROR_DEFINED |
| 542 | #define _CRT_WPERROR_DEFINED |
| 543 | _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg); |
| 544 | #endif |
| 545 | _CRTIMP int __cdecl _wputenv(const wchar_t *_EnvString); |
Jonathan Yong | 116470f | 2009-12-03 08:43:40 +0000 | [diff] [blame] | 546 | _CRTIMP void __cdecl _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
| 547 | _CRTIMP void __cdecl _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 548 | #endif |
| 549 | |
NightStrike | 05dc84a | 2008-04-28 20:19:44 +0000 | [diff] [blame] | 550 | _CRTIMP void __cdecl _beep(unsigned _Frequency,unsigned _Duration) __MINGW_ATTRIB_DEPRECATED; |
| 551 | /* Not to be confused with _set_error_mode (int). */ |
| 552 | _CRTIMP void __cdecl _seterrormode(int _Mode) __MINGW_ATTRIB_DEPRECATED; |
| 553 | _CRTIMP void __cdecl _sleep(unsigned long _Duration) __MINGW_ATTRIB_DEPRECATED; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 554 | #endif |
| 555 | |
| 556 | #ifndef NO_OLDNAMES |
| 557 | #ifndef _POSIX_ |
Kai Tietz | 7750267 | 2007-11-23 10:26:28 +0000 | [diff] [blame] | 558 | #if 0 |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 559 | #ifndef __cplusplus |
| 560 | #ifndef NOMINMAX |
Kai Tietz | 7750267 | 2007-11-23 10:26:28 +0000 | [diff] [blame] | 561 | #ifndef max |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 562 | #define max(a,b) (((a) > (b)) ? (a) : (b)) |
Kai Tietz | 7750267 | 2007-11-23 10:26:28 +0000 | [diff] [blame] | 563 | #endif |
| 564 | #ifndef min |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 565 | #define min(a,b) (((a) < (b)) ? (a) : (b)) |
| 566 | #endif |
| 567 | #endif |
Kai Tietz | 7750267 | 2007-11-23 10:26:28 +0000 | [diff] [blame] | 568 | #endif |
| 569 | #endif |
| 570 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 571 | #define sys_errlist _sys_errlist |
| 572 | #define sys_nerr _sys_nerr |
| 573 | #define environ _environ |
Jonathan Yong | ff428b3 | 2009-10-16 12:19:21 +0000 | [diff] [blame] | 574 | char *__cdecl ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
| 575 | char *__cdecl fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
| 576 | char *__cdecl gcvt(double _Val,int _NumOfDigits,char *_DstBuf) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
| 577 | char *__cdecl itoa(int _Val,char *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
| 578 | char *__cdecl ltoa(long _Val,char *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
| 579 | int __cdecl putenv(const char *_EnvString) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
Jonathan Yong | 185fce0 | 2011-05-05 00:46:56 +0000 | [diff] [blame] | 580 | |
| 581 | #ifndef _CRT_SWAB_DEFINED |
| 582 | #define _CRT_SWAB_DEFINED /* Also in unistd.h */ |
Jonathan Yong | ff428b3 | 2009-10-16 12:19:21 +0000 | [diff] [blame] | 583 | void __cdecl swab(char *_Buf1,char *_Buf2,int _SizeInBytes) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
Jonathan Yong | 185fce0 | 2011-05-05 00:46:56 +0000 | [diff] [blame] | 584 | #endif |
| 585 | |
Jonathan Yong | ff428b3 | 2009-10-16 12:19:21 +0000 | [diff] [blame] | 586 | char *__cdecl ultoa(unsigned long _Val,char *_Dstbuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_MSVC2005; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 587 | onexit_t __cdecl onexit(onexit_t _Func); |
| 588 | #endif |
| 589 | #endif |
| 590 | |
| 591 | #if !defined __NO_ISOCEXT /* externs in static libmingwex.a */ |
| 592 | |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 593 | typedef struct { __MINGW_EXTENSION long long quot, rem; } lldiv_t; |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 594 | |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 595 | __MINGW_EXTENSION lldiv_t __cdecl lldiv(long long, long long); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 596 | |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 597 | __MINGW_EXTENSION long long __cdecl llabs(long long); |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 598 | #ifndef __CRT__NO_INLINE |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 599 | __MINGW_EXTENSION __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); } |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 600 | #endif |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 601 | |
Kai Tietz | c93f153 | 2010-08-14 10:43:15 +0000 | [diff] [blame] | 602 | __MINGW_EXTENSION long long __cdecl strtoll(const char * __restrict__, char ** __restrict, int); |
| 603 | __MINGW_EXTENSION unsigned long long __cdecl strtoull(const char * __restrict__, char ** __restrict__, int); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 604 | |
Kai Tietz | 0502984 | 2007-11-19 15:18:40 +0000 | [diff] [blame] | 605 | /* these are stubs for MS _i64 versions */ |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 606 | __MINGW_EXTENSION long long __cdecl atoll (const char *); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 607 | |
| 608 | #ifndef __STRICT_ANSI__ |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 609 | __MINGW_EXTENSION long long __cdecl wtoll (const wchar_t *); |
| 610 | __MINGW_EXTENSION char *__cdecl lltoa (long long, char *, int); |
| 611 | __MINGW_EXTENSION char *__cdecl ulltoa (unsigned long long , char *, int); |
| 612 | __MINGW_EXTENSION wchar_t *__cdecl lltow (long long, wchar_t *, int); |
| 613 | __MINGW_EXTENSION wchar_t *__cdecl ulltow (unsigned long long, wchar_t *, int); |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 614 | |
| 615 | /* __CRT_INLINE using non-ansi functions */ |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 616 | #ifndef __CRT__NO_INLINE |
Kai Tietz | 12cda48 | 2009-09-06 12:02:08 +0000 | [diff] [blame] | 617 | __MINGW_EXTENSION __CRT_INLINE long long __cdecl atoll (const char * _c) { return _atoi64 (_c); } |
| 618 | __MINGW_EXTENSION __CRT_INLINE char *__cdecl lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); } |
| 619 | __MINGW_EXTENSION __CRT_INLINE char *__cdecl ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); } |
| 620 | __MINGW_EXTENSION __CRT_INLINE long long __cdecl wtoll (const wchar_t * _w) { return _wtoi64 (_w); } |
| 621 | __MINGW_EXTENSION __CRT_INLINE wchar_t *__cdecl lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); } |
| 622 | __MINGW_EXTENSION __CRT_INLINE wchar_t *__cdecl ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); } |
Kai Tietz | 17f7ecc | 2009-07-27 07:59:50 +0000 | [diff] [blame] | 623 | #endif /* !__CRT__NO_INLINE */ |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 624 | #endif /* (__STRICT_ANSI__) */ |
| 625 | |
| 626 | #endif /* !__NO_ISOCEXT */ |
| 627 | |
| 628 | #ifdef __cplusplus |
| 629 | } |
| 630 | #endif |
| 631 | |
| 632 | #pragma pack(pop) |
Kai Tietz | 9b530d5 | 2007-10-16 15:02:01 +0000 | [diff] [blame] | 633 | |
Kai Tietz | 6568519 | 2007-10-18 13:23:49 +0000 | [diff] [blame] | 634 | #include <sec_api/stdlib_s.h> |
Kai Tietz | 0502984 | 2007-11-19 15:18:40 +0000 | [diff] [blame] | 635 | #include <malloc.h> |
Kai Tietz | 9b530d5 | 2007-10-16 15:02:01 +0000 | [diff] [blame] | 636 | |
Kai Tietz | edaa25e | 2007-08-23 09:28:16 +0000 | [diff] [blame] | 637 | #endif |