2008-12-19 23:34:20 +00:00
/**
* This file has no copyright assigned and is placed in the Public Domain .
* This file is part of the w64 mingw - runtime package .
* No warranty is given ; refer to the file DISCLAIMER within this package .
*/
# include <_mingw.h>
2012-01-03 19:41:18 +00:00
# include <specstrings.h>
2008-12-22 05:55:21 +00:00
# ifndef _INC_CRTDEFS
# define _INC_CRTDEFS
2021-07-27 13:08:26 +00:00
# ifndef NULL
# ifdef __cplusplus
# define NULL 0
# else
# define NULL ((void *)0)
# endif
# endif
2008-12-22 05:55:21 +00:00
# ifdef _USE_32BIT_TIME_T
# ifdef _WIN64
# error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
# undef _USE_32BIT_TIME_T
# endif
# else
# if _INTEGRAL_MAX_BITS < 64
# define _USE_32BIT_TIME_T
# endif
# endif
2014-06-01 21:47:51 +00:00
# undef _CRT_PACKING
# define _CRT_PACKING 8
# pragma pack(push,_CRT_PACKING)
2009-08-06 11:03:08 +00:00
/* Disable non-ANSI C definitions if compiling with __STDC__ */
//HACK: Disabled
//#if __STDC__
//#define NO_OLDNAMES
//#endif
2008-12-22 05:55:21 +00:00
2010-03-28 23:12:46 +00:00
2008-12-22 05:55:21 +00:00
/** Properties ***************************************************************/
# ifndef _CRT_STRINGIZE
# define __CRT_STRINGIZE(_Value) #_Value
# define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
# endif
2021-04-12 08:07:35 +00:00
# ifndef _CRT_DEFER_MACRO
# define _CRT_DEFER_MACRO(M,...) M(__VA_ARGS__)
# endif
2008-12-22 05:55:21 +00:00
# ifndef _CRT_WIDE
# define __CRT_WIDE(_String) L ## _String
# define _CRT_WIDE(_String) __CRT_WIDE(_String)
# endif
# ifndef _W64
# if !defined(_midl) && defined(_X86_) && _MSC_VER >= 1300
# define _W64 __w64
# else
# define _W64
# endif
# endif
# ifndef _CRTIMP
2010-03-28 23:12:46 +00:00
# ifdef CRTDLL /* Defined for ntdll, crtdll, msvcrt, etc */
2011-06-20 12:41:32 +00:00
# define _CRTIMP
2010-03-28 23:12:46 +00:00
# elif defined(_DLL)
2008-12-22 05:55:21 +00:00
# define _CRTIMP __declspec(dllimport)
2010-03-28 23:12:46 +00:00
# else /* !CRTDLL && !_DLL */
# define _CRTIMP
# endif /* CRTDLL || _DLL */
# endif /* !_CRTIMP */
2008-12-22 05:55:21 +00:00
//#define _CRT_ALTERNATIVE_INLINES
# ifndef _CRTIMP_ALT
# ifdef _DLL
# ifdef _CRT_ALTERNATIVE_INLINES
# define _CRTIMP_ALT
# else
# define _CRTIMP_ALT _CRTIMP
# define _CRT_ALTERNATIVE_IMPORTED
# endif
# else
# define _CRTIMP_ALT
# endif
# endif
# ifndef _CRTDATA
# ifdef _M_CEE_PURE
# define _CRTDATA(x) x
# else
# define _CRTDATA(x) _CRTIMP x
# endif
# endif
# ifndef _CRTIMP2
# define _CRTIMP2 _CRTIMP
# endif
# ifndef _CRTIMP_PURE
# define _CRTIMP_PURE _CRTIMP
# endif
# ifndef _CRTIMP_ALTERNATIVE
# define _CRTIMP_ALTERNATIVE _CRTIMP
# define _CRT_ALTERNATIVE_IMPORTED
# endif
# ifndef _CRTIMP_NOIA64
# ifdef __ia64__
# define _CRTIMP_NOIA64
# else
# define _CRTIMP_NOIA64 _CRTIMP
# endif
# endif
# ifndef _MRTIMP2
# define _MRTIMP2 _CRTIMP
# endif
# ifndef _MCRTIMP
# define _MCRTIMP _CRTIMP
# endif
# ifndef _PGLOBAL
# define _PGLOBAL
# endif
# ifndef _AGLOBAL
# define _AGLOBAL
# endif
# ifndef _CONST_RETURN
# define _CONST_RETURN
# endif
# ifndef UNALIGNED
2021-12-13 13:16:45 +00:00
# if defined(__ia64__) || defined(__x86_64) || defined(__arm__) || defined(__arm64__)
2008-12-22 05:55:21 +00:00
# define UNALIGNED __unaligned
# else
# define UNALIGNED
# endif
# endif
# ifndef _CRT_ALIGN
2011-02-10 13:01:39 +00:00
# if defined (__midl) || defined(__WIDL__)
# define _CRT_ALIGN(x)
# elif defined(_MSC_VER)
# define _CRT_ALIGN(x) __declspec(align(x))
# else
2008-12-22 05:55:21 +00:00
# define _CRT_ALIGN(x) __attribute__ ((aligned(x)))
# endif
2011-02-10 13:01:39 +00:00
# endif
2008-12-22 05:55:21 +00:00
# ifndef _CRTNOALIAS
# define _CRTNOALIAS
# endif
# ifndef _CRTRESTRICT
# define _CRTRESTRICT
# endif
# ifndef __CRTDECL
# define __CRTDECL __cdecl
# endif
# ifndef _CRT_UNUSED
# define _CRT_UNUSED(x) (void)x
# endif
# ifndef _CONST_RETURN
# ifdef __cplusplus
# define _CONST_RETURN const
# define _CRT_CONST_CORRECT_OVERLOADS
# else
# define _CONST_RETURN
# endif
# endif
# define __crt_typefix(ctype)
2021-07-28 08:25:22 +00:00
# ifndef _STATIC_ASSERT
# ifdef __cplusplus
# define _STATIC_ASSERT(expr) static_assert((expr), #expr)
# elif defined(__clang__) || defined(__GNUC__)
# define _STATIC_ASSERT(expr) _Static_assert((expr), #expr)
# else
# define _STATIC_ASSERT(expr) extern char (*__static_assert__(void)) [(expr) ? 1 : -1]
# endif
# endif /* _STATIC_ASSERT */
2008-12-22 05:55:21 +00:00
/** Deprecated ***************************************************************/
2010-01-04 13:36:59 +00:00
# ifdef __GNUC__
# define _CRT_DEPRECATE_TEXT(_Text) __attribute__ ((deprecated))
# elif defined(_MSC_VER)
# define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
# else
# define _CRT_DEPRECATE_TEXT(_Text)
# endif
# ifndef __STDC_WANT_SECURE_LIB__
# define __STDC_WANT_SECURE_LIB__ 1
# endif
2008-12-22 05:55:21 +00:00
# ifndef _CRT_INSECURE_DEPRECATE
# ifdef _CRT_SECURE_NO_DEPRECATE
# define _CRT_INSECURE_DEPRECATE(_Replacement)
# else
# define _CRT_INSECURE_DEPRECATE(_Replacement) \
_CRT_DEPRECATE_TEXT ( " This may be unsafe, Try " # _Replacement " instead! " )
# endif
# endif
# ifndef _CRT_INSECURE_DEPRECATE_CORE
# ifdef _CRT_SECURE_NO_DEPRECATE_CORE
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement)
# else
# define _CRT_INSECURE_DEPRECATE_CORE(_Replacement) \
_CRT_DEPRECATE_TEXT ( " This may be unsafe, Try " # _Replacement " instead! Enable _CRT_SECURE_NO_DEPRECATE to avoid thie warning. " )
# endif
# endif
# ifndef _CRT_NONSTDC_DEPRECATE
# ifdef _CRT_NONSTDC_NO_DEPRECATE
# define _CRT_NONSTDC_DEPRECATE(_Replacement)
# else
# define _CRT_NONSTDC_DEPRECATE(_Replacement) \
_CRT_DEPRECATE_TEXT ( " Deprecated POSIX name, Try " # _Replacement " instead! " )
# endif
# endif
# ifndef _CRT_INSECURE_DEPRECATE_MEMORY
# define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
# endif
# ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
# define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
# endif
# ifndef _CRT_MANAGED_HEAP_DEPRECATE
# define _CRT_MANAGED_HEAP_DEPRECATE
# endif
# ifndef _CRT_OBSOLETE
# define _CRT_OBSOLETE(_NewItem)
# endif
2015-05-14 20:21:14 +00:00
# ifndef _CRT_JIT_INTRINSIC
# define _CRT_JIT_INTRINSIC
# endif
2010-03-28 23:12:46 +00:00
2008-12-22 05:55:21 +00:00
/** Constants ****************************************************************/
# define _ARGMAX 100
# ifndef _TRUNCATE
# define _TRUNCATE ((size_t)-1)
# endif
2014-05-26 09:55:29 +00:00
# ifndef __REACTOS__
2008-12-22 05:55:21 +00:00
# define __STDC_SECURE_LIB__ 200411L
# define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
# define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
2014-05-26 09:55:29 +00:00
# endif
2008-12-22 05:55:21 +00:00
/** Type definitions *********************************************************/
# ifdef __cplusplus
extern " C " {
# endif
# ifndef _SIZE_T_DEFINED
# define _SIZE_T_DEFINED
# undef size_t
# ifdef _WIN64
# if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef unsigned int size_t __attribute__ ( ( mode ( DI ) ) ) ;
# else
2010-02-28 09:37:57 +00:00
__MINGW_EXTENSION typedef unsigned __int64 size_t ;
2008-12-22 05:55:21 +00:00
# endif
# else
typedef unsigned int size_t ;
# endif
# endif
# ifndef _INTPTR_T_DEFINED
# define _INTPTR_T_DEFINED
# ifndef __intptr_t_defined
# define __intptr_t_defined
# undef intptr_t
# ifdef _WIN64
# if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef int intptr_t __attribute__ ( ( mode ( DI ) ) ) ;
# else
2010-02-28 09:37:57 +00:00
__MINGW_EXTENSION typedef __int64 intptr_t ;
2008-12-22 05:55:21 +00:00
# endif
# else
typedef int intptr_t ;
# endif
# endif
# endif
# ifndef _UINTPTR_T_DEFINED
# define _UINTPTR_T_DEFINED
# ifndef __uintptr_t_defined
# define __uintptr_t_defined
# undef uintptr_t
# ifdef _WIN64
# if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef unsigned int uintptr_t __attribute__ ( ( mode ( DI ) ) ) ;
# else
2010-02-28 09:37:57 +00:00
__MINGW_EXTENSION typedef unsigned __int64 uintptr_t ;
2008-12-22 05:55:21 +00:00
# endif
# else
typedef unsigned int uintptr_t ;
# endif
# endif
# endif
# ifndef _PTRDIFF_T_DEFINED
# define _PTRDIFF_T_DEFINED
# ifndef _PTRDIFF_T_
# undef ptrdiff_t
# ifdef _WIN64
# if defined(__GNUC__) && defined(__STRICT_ANSI__)
typedef int ptrdiff_t __attribute__ ( ( mode ( DI ) ) ) ;
# else
2010-02-28 09:37:57 +00:00
__MINGW_EXTENSION typedef __int64 ptrdiff_t ;
2008-12-22 05:55:21 +00:00
# endif
# else
typedef int ptrdiff_t ;
# endif
# endif
# endif
# ifndef _WCHAR_T_DEFINED
# define _WCHAR_T_DEFINED
2014-09-30 20:48:54 +00:00
# if defined(_MSC_VER) || !defined(__cplusplus)
2008-12-22 05:55:21 +00:00
typedef unsigned short wchar_t ;
# endif
# endif
# ifndef _WCTYPE_T_DEFINED
# define _WCTYPE_T_DEFINED
typedef unsigned short wint_t ;
typedef unsigned short wctype_t ;
# endif
2014-06-01 21:47:51 +00:00
# ifdef __GNUC__
# ifndef __GNUC_VA_LIST
# define __GNUC_VA_LIST
typedef __builtin_va_list __gnuc_va_list ;
# endif
# endif
# ifndef _VA_LIST_DEFINED
# define _VA_LIST_DEFINED
# if defined(__GNUC__)
typedef __gnuc_va_list va_list ;
# elif defined(_MSC_VER)
typedef _Writable_bytes_ ( _Inexpressible_ ( " length varies " ) ) char * va_list ;
# endif
# endif
2008-12-22 05:55:21 +00:00
# ifndef _ERRCODE_DEFINED
# define _ERRCODE_DEFINED
typedef int errcode ;
typedef int errno_t ;
# endif
# ifndef _TIME32_T_DEFINED
# define _TIME32_T_DEFINED
typedef long __time32_t ;
# endif
# ifndef _TIME64_T_DEFINED
# define _TIME64_T_DEFINED
# if _INTEGRAL_MAX_BITS >= 64
2010-02-28 09:37:57 +00:00
__MINGW_EXTENSION typedef __int64 __time64_t ;
2008-12-22 05:55:21 +00:00
# endif
# endif
# ifndef _TIME_T_DEFINED
# define _TIME_T_DEFINED
# ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t ;
# else
typedef __time64_t time_t ;
# endif
# endif
2013-02-17 14:27:48 +00:00
struct threadmbcinfostruct ;
typedef struct threadmbcinfostruct * pthreadmbcinfo ;
2008-12-22 05:55:21 +00:00
# ifndef _TAGLC_ID_DEFINED
# define _TAGLC_ID_DEFINED
typedef struct tagLC_ID {
unsigned short wLanguage ;
unsigned short wCountry ;
unsigned short wCodePage ;
} LC_ID , * LPLC_ID ;
# endif
# ifndef _THREADLOCALEINFO
# define _THREADLOCALEINFO
typedef struct threadlocaleinfostruct {
int refcount ;
unsigned int lc_codepage ;
unsigned int lc_collate_cp ;
unsigned long lc_handle [ 6 ] ;
LC_ID lc_id [ 6 ] ;
struct {
char * locale ;
wchar_t * wlocale ;
int * refcount ;
int * wrefcount ;
} lc_category [ 6 ] ;
int lc_clike ;
int mb_cur_max ;
int * lconv_intl_refcount ;
int * lconv_num_refcount ;
int * lconv_mon_refcount ;
struct lconv * lconv ;
int * ctype1_refcount ;
unsigned short * ctype1 ;
const unsigned short * pctype ;
const unsigned char * pclmap ;
const unsigned char * pcumap ;
struct __lc_time_data * lc_time_curr ;
[CRT]
- Update file.c to recent wine. (now with locking!)
- implement/enable __wcserror, __wcserror_s, _access_s, _ctime32_s, _ctime64_s,
_cwprintf, _fseeki64, _ftelli64, _get_osplatform, _get_output_format,
_get_pgmptr, _get_wpgmptr, _get_terminate, _get_tzname, _get_unexpected,
_gmtime64_s, _i64toa_s, _i64tow_s, _initterm_e, _itoa_s, _itow_s,
_localtime32_s, _localtime64_s, _ltoa_s, _ltow_s, _putwch, _searchenv_s,
_sopen_s, _ui64toa_s, _ui64tow_s, _vcwprintf, _vsprintf_p, _waccess_s,
_wcserror, _wcserror_s, _wfopen_s, _wsopen_s, fopen_s, fprintf_s, fwprintf_s,
printf_s, strerror_s, strncpy_s, strtok_s, vfprintf_s, vfwprintf_s, vprintf_s,
vwprintf_s, wcscat_s, wcsncat_s, wcstok_s, wprintf_s. Most code comes from
wine.
- Fix __set_errno -> _set_errno and export it.
- Remove unneeded files.
[CRT_HEADERS]
- add threadmbcinfo struct.
- update some sec_api headers from mingw64 due to missing or incorrect
functions.
Patch by Samuel Serapion.
Changes to msvcrt spec by me due to winebuild.
CRLF/LF fixes.
svn path=/trunk/; revision=54651
2011-12-14 22:09:24 +00:00
} threadlocinfo , * pthreadlocinfo ;
2008-12-22 05:55:21 +00:00
# endif
[CRT]
- Update file.c to recent wine. (now with locking!)
- implement/enable __wcserror, __wcserror_s, _access_s, _ctime32_s, _ctime64_s,
_cwprintf, _fseeki64, _ftelli64, _get_osplatform, _get_output_format,
_get_pgmptr, _get_wpgmptr, _get_terminate, _get_tzname, _get_unexpected,
_gmtime64_s, _i64toa_s, _i64tow_s, _initterm_e, _itoa_s, _itow_s,
_localtime32_s, _localtime64_s, _ltoa_s, _ltow_s, _putwch, _searchenv_s,
_sopen_s, _ui64toa_s, _ui64tow_s, _vcwprintf, _vsprintf_p, _waccess_s,
_wcserror, _wcserror_s, _wfopen_s, _wsopen_s, fopen_s, fprintf_s, fwprintf_s,
printf_s, strerror_s, strncpy_s, strtok_s, vfprintf_s, vfwprintf_s, vprintf_s,
vwprintf_s, wcscat_s, wcsncat_s, wcstok_s, wprintf_s. Most code comes from
wine.
- Fix __set_errno -> _set_errno and export it.
- Remove unneeded files.
[CRT_HEADERS]
- add threadmbcinfo struct.
- update some sec_api headers from mingw64 due to missing or incorrect
functions.
Patch by Samuel Serapion.
Changes to msvcrt spec by me due to winebuild.
CRLF/LF fixes.
svn path=/trunk/; revision=54651
2011-12-14 22:09:24 +00:00
struct __lc_time_data ;
2024-03-08 10:55:01 +00:00
# ifndef DEFINED_localeinfo_struct
[CRT]
- Update file.c to recent wine. (now with locking!)
- implement/enable __wcserror, __wcserror_s, _access_s, _ctime32_s, _ctime64_s,
_cwprintf, _fseeki64, _ftelli64, _get_osplatform, _get_output_format,
_get_pgmptr, _get_wpgmptr, _get_terminate, _get_tzname, _get_unexpected,
_gmtime64_s, _i64toa_s, _i64tow_s, _initterm_e, _itoa_s, _itow_s,
_localtime32_s, _localtime64_s, _ltoa_s, _ltow_s, _putwch, _searchenv_s,
_sopen_s, _ui64toa_s, _ui64tow_s, _vcwprintf, _vsprintf_p, _waccess_s,
_wcserror, _wcserror_s, _wfopen_s, _wsopen_s, fopen_s, fprintf_s, fwprintf_s,
printf_s, strerror_s, strncpy_s, strtok_s, vfprintf_s, vfwprintf_s, vprintf_s,
vwprintf_s, wcscat_s, wcsncat_s, wcstok_s, wprintf_s. Most code comes from
wine.
- Fix __set_errno -> _set_errno and export it.
- Remove unneeded files.
[CRT_HEADERS]
- add threadmbcinfo struct.
- update some sec_api headers from mingw64 due to missing or incorrect
functions.
Patch by Samuel Serapion.
Changes to msvcrt spec by me due to winebuild.
CRLF/LF fixes.
svn path=/trunk/; revision=54651
2011-12-14 22:09:24 +00:00
typedef struct localeinfo_struct {
pthreadlocinfo locinfo ;
pthreadmbcinfo mbcinfo ;
} _locale_tstruct , * _locale_t ;
2024-03-08 10:55:01 +00:00
# define DEFINED_localeinfo_struct 1
# endif
2008-12-22 05:55:21 +00:00
# ifdef __cplusplus
}
# endif
2020-10-24 12:18:09 +00:00
# if defined(_PREFAST_) && defined(_PFT_SHOULD_CHECK_RETURN)
# define _Check_return_opt_ _Check_return_
# else
# define _Check_return_opt_
# endif
# if defined(_PREFAST_) && defined(_PFT_SHOULD_CHECK_RETURN_WAT)
# define _Check_return_wat_ _Check_return_
# else
# define _Check_return_wat_
# endif
2008-12-22 05:55:21 +00:00
# pragma pack(pop)
2021-04-12 08:07:35 +00:00
/* GCC-style diagnostics */
# ifndef PRAGMA_DIAGNOSTIC_IGNORED
# ifdef __clang__
# define PRAGMA_DIAGNOSTIC_PUSH() _Pragma("clang diagnostic push")
# define PRAGMA_DIAGNOSTIC_IGNORED(__x) \
_Pragma ( _CRT_STRINGIZE ( clang diagnostic ignored _CRT_DEFER_MACRO ( _CRT_STRINGIZE , __x ) ) )
# define PRAGMA_DIAGNOSTIC_POP() _Pragma("clang diagnostic pop")
# elif defined (__GNUC__)
# define PRAGMA_DIAGNOSTIC_PUSH() _Pragma("GCC diagnostic push")
# define PRAGMA_DIAGNOSTIC_IGNORED(__x) \
_Pragma ( " GCC diagnostic ignored \" -Wpragmas \" " ) /* This allows us to use it for unkonwn warnings */ \
_Pragma ( _CRT_STRINGIZE ( GCC diagnostic ignored _CRT_DEFER_MACRO ( _CRT_STRINGIZE , __x ) ) ) \
_Pragma ( " GCC diagnostic error \" -Wpragmas \" " ) /* This makes sure that we don't have side effects because we disabled it for our own use. This will be popped anyway. */
# define PRAGMA_DIAGNOSTIC_POP() _Pragma("GCC diagnostic pop")
# else
# define PRAGMA_DIAGNOSTIC_PUSH()
# define PRAGMA_DIAGNOSTIC_IGNORED(__x)
# define PRAGMA_DIAGNOSTIC_POP()
# endif
# endif
2008-12-22 05:55:21 +00:00
# endif /* !_INC_CRTDEFS */