zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

wchar.h (61564B) - Raw


      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_WCHAR
      7 #define _INC_WCHAR
      8 
      9 #include <corecrt.h>
     10 #include <corecrt_stdio_config.h>
     11 #include <corecrt_wstdlib.h>
     12 #include <corecrt_wctype.h>
     13 
     14 #if __USE_MINGW_ANSI_STDIO && !defined (__USE_MINGW_STRTOX) && !defined(_CRTBLD)
     15 #define __USE_MINGW_STRTOX 1
     16 #endif
     17 
     18 #if defined(__LIBMSVCRT__)
     19 /* When building mingw-w64, this should be blank.  */
     20 #define _SECIMP
     21 #else
     22 #ifndef _SECIMP
     23 #define _SECIMP __declspec(dllimport)
     24 #endif /* _SECIMP */
     25 #endif /* defined(__LIBMSVCRT__) */
     26 
     27 #pragma pack(push,_CRT_PACKING)
     28 
     29 #ifdef __cplusplus
     30 extern "C" {
     31 #endif
     32 
     33 #ifndef WCHAR_MIN  /* also in stdint.h */
     34 #define WCHAR_MIN 0U
     35 #define WCHAR_MAX 0xffffU
     36 #endif
     37 
     38 #ifndef WEOF
     39 #define WEOF (wint_t)(0xFFFF)
     40 #endif
     41 
     42 #ifndef _FILE_DEFINED
     43   struct _iobuf {
     44     char *_ptr;
     45     int _cnt;
     46     char *_base;
     47     int _flag;
     48     int _file;
     49     int _charbuf;
     50     int _bufsiz;
     51     char *_tmpfname;
     52   };
     53   typedef struct _iobuf FILE;
     54 #define _FILE_DEFINED
     55 #endif
     56 
     57 _CRTIMP FILE *__cdecl __acrt_iob_func(unsigned index);
     58 #ifndef _STDIO_DEFINED
     59   _CRTIMP FILE *__cdecl __iob_func(void);
     60 #define _iob __iob_func()
     61 #endif
     62 
     63 #ifndef _STDSTREAM_DEFINED
     64 #define stdin (__acrt_iob_func(0))
     65 #define stdout (__acrt_iob_func(1))
     66 #define stderr (__acrt_iob_func(2))
     67 #define _STDSTREAM_DEFINED
     68 #endif
     69 
     70 #ifndef _FSIZE_T_DEFINED
     71   typedef unsigned long _fsize_t;
     72 #define _FSIZE_T_DEFINED
     73 #endif
     74 
     75 #ifndef _WFINDDATA_T_DEFINED
     76   struct _wfinddata32_t {
     77     unsigned attrib;
     78     __time32_t time_create;
     79     __time32_t time_access;
     80     __time32_t time_write;
     81     _fsize_t size;
     82     wchar_t name[260];
     83   };
     84 
     85   struct _wfinddata32i64_t {
     86     unsigned attrib;
     87     __time32_t time_create;
     88     __time32_t time_access;
     89     __time32_t time_write;
     90     __MINGW_EXTENSION __int64 size;
     91     wchar_t name[260];
     92   };
     93 
     94   struct _wfinddata64i32_t {
     95     unsigned attrib;
     96     __time64_t time_create;
     97     __time64_t time_access;
     98     __time64_t time_write;
     99     _fsize_t size;
    100     wchar_t name[260];
    101   };
    102 
    103   struct _wfinddata64_t {
    104     unsigned attrib;
    105     __time64_t time_create;
    106     __time64_t time_access;
    107     __time64_t time_write;
    108     __MINGW_EXTENSION __int64 size;
    109     wchar_t name[260];
    110   };
    111 /* #endif */
    112 
    113 #ifdef _USE_32BIT_TIME_T
    114 #define _wfinddata_t _wfinddata32_t
    115 #define _wfinddatai64_t _wfinddata32i64_t
    116 
    117 #define _wfindfirst _wfindfirst32
    118 #define _wfindnext _wfindnext32
    119 #define _wfindfirst32i64 _wfindfirsti64
    120 #define _wfindnext32i64 _wfindnexti64
    121 #else
    122 #define _wfinddata_t _wfinddata64i32_t
    123 #define _wfinddatai64_t _wfinddata64_t
    124 
    125 #define _wfindfirst _wfindfirst64i32
    126 #define _wfindnext _wfindnext64i32
    127 #define _wfindfirsti64 _wfindfirst64
    128 #define _wfindnexti64 _wfindnext64
    129 #endif
    130 
    131 #define _WFINDDATA_T_DEFINED
    132 #endif
    133 
    134 #ifndef NULL
    135 #ifdef __cplusplus
    136 #ifndef _WIN64
    137 #define NULL 0
    138 #else
    139 #define NULL 0LL
    140 #endif  /* W64 */
    141 #else
    142 #define NULL ((void *)0)
    143 #endif
    144 #endif
    145 
    146 #ifndef _CONST_RETURN
    147 #define _CONST_RETURN
    148 #endif
    149 
    150 #define _WConst_return _CONST_RETURN
    151 
    152 #ifndef _WDIRECT_DEFINED
    153 #define _WDIRECT_DEFINED
    154 
    155 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
    156 #pragma push_macro("_wgetcwd")
    157 #undef _wgetcwd
    158 #pragma push_macro("_wgetdcwd")
    159 #undef _wgetdcwd
    160 #pragma push_macro("_wgetdcwd_nolock")
    161 #undef _wgetdcwd_nolock
    162 #endif
    163   _CRTIMP wchar_t *__cdecl _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
    164   _CRTIMP wchar_t *__cdecl _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
    165 #if __MSVCRT_VERSION__ >= 0x800
    166   wchar_t *__cdecl _wgetdcwd_nolock(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
    167 #endif
    168 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
    169 #pragma pop_macro("_wgetcwd")
    170 #pragma pop_macro("_wgetdcwd")
    171 #pragma pop_macro("_wgetdcwd_nolock")
    172 #endif
    173   _CRTIMP int __cdecl _wchdir(const wchar_t *_Path);
    174   _CRTIMP int __cdecl _wmkdir(const wchar_t *_Path);
    175   _CRTIMP int __cdecl _wrmdir(const wchar_t *_Path);
    176 #endif
    177 
    178 #ifndef _WIO_DEFINED
    179 #define _WIO_DEFINED
    180 
    181   _CRTIMP int __cdecl _waccess(const wchar_t *_Filename,int _AccessMode);
    182   _CRTIMP int __cdecl _wchmod(const wchar_t *_Filename,int _Mode);
    183   _CRTIMP int __cdecl _wcreat(const wchar_t *_Filename,int _PermissionMode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    184   _CRTIMP intptr_t __cdecl _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData);
    185   _CRTIMP int __cdecl _wfindnext32(intptr_t _FindHandle,struct _wfinddata32_t *_FindData);
    186   _CRTIMP int __cdecl _wunlink(const wchar_t *_Filename);
    187   _CRTIMP int __cdecl _wrename(const wchar_t *_OldFilename,const wchar_t *_NewFilename);
    188   _CRTIMP wchar_t *__cdecl _wmktemp(wchar_t *_TemplateName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    189   _CRTIMP intptr_t __cdecl _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData);
    190   intptr_t __cdecl _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData);
    191   _CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t *_Filename,struct _wfinddata64_t *_FindData);
    192   _CRTIMP int __cdecl _wfindnext32i64(intptr_t _FindHandle,struct _wfinddata32i64_t *_FindData);
    193   int __cdecl _wfindnext64i32(intptr_t _FindHandle,struct _wfinddata64i32_t *_FindData);
    194   _CRTIMP int __cdecl _wfindnext64(intptr_t _FindHandle,struct _wfinddata64_t *_FindData);
    195   _CRTIMP errno_t __cdecl _wsopen_s(int *_FileHandle,const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionFlag);
    196   _CRTIMP int __cdecl _wopen(const wchar_t *_Filename,int _OpenFlag,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    197   _CRTIMP int __cdecl _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    198 #endif
    199 
    200 #ifndef _WLOCALE_DEFINED
    201 #define _WLOCALE_DEFINED
    202   _CRTIMP wchar_t *__cdecl _wsetlocale(int _Category,const wchar_t *_Locale);
    203 #endif
    204 
    205 #if __MSVCRT_VERSION__ >= 0xB00
    206   _CRTIMP _locale_t __cdecl _wcreate_locale(int _Category, const wchar_t *_Locale);
    207 #endif
    208 
    209 #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
    210 #ifndef _WEXEC_DEFINED
    211 #define _WEXEC_DEFINED
    212   _CRTIMP intptr_t __cdecl _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...);
    213   _CRTIMP intptr_t __cdecl _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...);
    214   _CRTIMP intptr_t __cdecl _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...);
    215   _CRTIMP intptr_t __cdecl _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...);
    216   _CRTIMP intptr_t __cdecl _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList);
    217   _CRTIMP intptr_t __cdecl _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
    218   _CRTIMP intptr_t __cdecl _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList);
    219   _CRTIMP intptr_t __cdecl _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
    220 #endif
    221 
    222 #ifndef _WSPAWN_DEFINED
    223 #define _WSPAWN_DEFINED
    224   _CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
    225   _CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
    226   _CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
    227   _CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
    228   _CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
    229   _CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
    230   _CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
    231   _CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
    232 #endif
    233 
    234 #ifndef _CRT_WSYSTEM_DEFINED
    235 #define _CRT_WSYSTEM_DEFINED
    236   _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
    237 #endif
    238 #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
    239 
    240 #if !defined(_POSIX_) || defined(__GNUC__)
    241 #ifndef _INO_T_DEFINED
    242 #define _INO_T_DEFINED
    243   typedef unsigned short _ino_t;
    244 #ifndef	NO_OLDNAMES
    245   typedef unsigned short ino_t;
    246 #endif
    247 #endif
    248 
    249 #ifndef _DEV_T_DEFINED
    250 #define _DEV_T_DEFINED
    251   typedef unsigned int _dev_t;
    252 #ifndef	NO_OLDNAMES
    253   typedef unsigned int dev_t;
    254 #endif
    255 #endif
    256 
    257 #include <_mingw_off_t.h>
    258 #include <_mingw_stat64.h>
    259 
    260 #ifndef _WSTAT_DEFINED
    261 #define _WSTAT_DEFINED
    262 
    263   _CRTIMP int __cdecl _wstat32(const wchar_t *_Name,struct _stat32 *_Stat);
    264   _CRTIMP int __cdecl _wstat32i64(const wchar_t *_Name,struct _stat32i64 *_Stat);
    265   _CRTIMP int __cdecl _wstat64i32(const wchar_t *_Name,struct _stat64i32 *_Stat);
    266   _CRTIMP int __cdecl _wstat64(const wchar_t *_Name,struct _stat64 *_Stat);
    267 #endif
    268 #endif
    269 
    270 #ifndef _WCONIO_DEFINED
    271 #define _WCONIO_DEFINED
    272 
    273 #ifndef WEOF
    274 #define WEOF (wint_t)(0xFFFF)
    275 #endif
    276 
    277   _CRTIMP wchar_t *_cgetws(wchar_t *_Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    278   _CRTIMP wint_t __cdecl _getwch(void);
    279   _CRTIMP wint_t __cdecl _getwche(void);
    280   _CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
    281   _CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
    282   _CRTIMP int __cdecl _cputws(const wchar_t *_String);
    283   _CRTIMP int __cdecl _cwprintf(const wchar_t * __restrict__ _Format,...);
    284   _CRTIMP int __cdecl _cwscanf(const wchar_t * __restrict__ _Format,...);
    285   _CRTIMP int __cdecl _cwscanf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    286   _CRTIMP int __cdecl _vcwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
    287   _CRTIMP int __cdecl _cwprintf_p(const wchar_t * __restrict__ _Format,...);
    288   _CRTIMP int __cdecl _vcwprintf_p(const wchar_t * __restrict__ _Format,va_list _ArgList);
    289 
    290   _CRTIMP int __cdecl _cwprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    291   _CRTIMP int __cdecl _vcwprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    292   _CRTIMP int __cdecl _cwprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    293   _CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    294 #if __MSVCRT_VERSION__ >= 0x800
    295   wint_t __cdecl _putwch_nolock(wchar_t _WCh);
    296   wint_t __cdecl _getwch_nolock(void);
    297   wint_t __cdecl _getwche_nolock(void);
    298   wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
    299 #endif
    300 #endif
    301 
    302 #ifdef _UCRT
    303   int __cdecl __stdio_common_vswprintf_p(unsigned __int64 _Options, wchar_t *_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
    304   int __cdecl __stdio_common_vfwprintf_p(unsigned __int64 _Options, FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
    305 #endif
    306 
    307 #ifndef _WSTDIO_DEFINED
    308 #define _WSTDIO_DEFINED
    309 
    310 /* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    311   int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
    312 /* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    313   int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const wchar_t * __restrict__ Format,va_list argp);
    314 /* __attribute__((__format__ (gnu_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    315   int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...);
    316 /* __attribute__((__format__ (gnu_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    317   int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list argp);
    318 /* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    319   int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    320 /* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    321   int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * __restrict__ Format,va_list argp);
    322 
    323 
    324 /* __attribute__((__format__ (gnu_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    325   int __cdecl __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    326 /* __attribute__((__format__ (gnu_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    327   int __cdecl __mingw_wprintf(const wchar_t * __restrict__ _Format,...);
    328 /* __attribute__((__format__ (gnu_wprintf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    329   int __cdecl __mingw_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
    330 /* __attribute__((__format__ (gnu_printf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    331   int __cdecl __mingw_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
    332 /* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    333   int __cdecl __mingw_snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...);
    334 /* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    335   int __cdecl __mingw_vsnwprintf (wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list);
    336 /* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    337   int __cdecl __mingw_swprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...);
    338 /* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    339   int __cdecl __mingw_vswprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ ,va_list);
    340 
    341 /* __attribute__((__format__ (ms_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    342   int __cdecl __ms_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...)
    343   __MINGW_UCRT_ASM_CALL(swscanf);
    344 /* __attribute__((__format__ (ms_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    345   int __cdecl __ms_vswscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,va_list)
    346   __MINGW_ASM_CALL(vswscanf);
    347 /* __attribute__((__format__ (ms_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    348   int __cdecl __ms_wscanf(const wchar_t * __restrict__ _Format,...)
    349   __MINGW_UCRT_ASM_CALL(wscanf);
    350 /* __attribute__((__format__ (ms_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    351   int __cdecl __ms_vwscanf(const wchar_t * __restrict__ _Format, va_list)
    352   __MINGW_ASM_CALL(vwscanf);
    353 /* __attribute__((__format__ (ms_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    354   int __cdecl __ms_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...)
    355   __MINGW_UCRT_ASM_CALL(fwscanf);
    356 /* __attribute__((__format__ (ms_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    357   int __cdecl __ms_vfwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list)
    358   __MINGW_ASM_CALL(vfwscanf);
    359 
    360 /* __attribute__((__format__ (ms_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    361   int __cdecl __ms_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    362   /* No __MINGW_UCRT_ASM_CALL for __ms_fwprintf; this is provided as an
    363    * actual function in the ucrt import libraries. */
    364 /* __attribute__((__format__ (ms_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    365   int __cdecl __ms_wprintf(const wchar_t * __restrict__ _Format,...)
    366   __MINGW_UCRT_ASM_CALL(wprintf);
    367 /* __attribute__((__format__ (ms_wprintf, 2, 0))) */__MINGW_ATTRIB_NONNULL(2)
    368   int __cdecl __ms_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList)
    369   __MINGW_UCRT_ASM_CALL(vfwprintf);
    370 /*__attribute__((__format__ (ms_wprintf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    371   int __cdecl __ms_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList)
    372   __MINGW_UCRT_ASM_CALL(vwprintf);
    373 /* __attribute__((__format__ (ms_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    374   int __cdecl __ms_swprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...)
    375   __MINGW_UCRT_ASM_CALL(swprintf);
    376 /* __attribute__((__format__ (ms_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    377   int __cdecl __ms_vswprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ ,va_list)
    378   __MINGW_UCRT_ASM_CALL(vswprintf);
    379 /* __attribute__((__format__ (ms_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    380   int __cdecl __ms_snwprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , ...)
    381   __MINGW_UCRT_ASM_CALL(snwprintf);
    382 /* __attribute__((__format__ (ms_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    383   int __cdecl __ms_vsnwprintf(wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list)
    384   __MINGW_UCRT_ASM_CALL(vsnwprintf);
    385 
    386 #ifdef _UCRT
    387   int __cdecl __stdio_common_vswprintf(unsigned __int64 options, wchar_t *str, size_t len, const wchar_t *format, _locale_t locale, va_list valist);
    388   int __cdecl __stdio_common_vfwprintf(unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist);
    389   int __cdecl __stdio_common_vswscanf(unsigned __int64 options, const wchar_t *input, size_t length, const wchar_t *format, _locale_t locale, va_list valist);
    390   int __cdecl __stdio_common_vfwscanf(unsigned __int64 options, FILE *file, const wchar_t *format, _locale_t locale, va_list valist);
    391 #endif
    392 
    393 #if __USE_MINGW_ANSI_STDIO
    394 
    395 /*
    396  * User has expressed a preference for C99 conformance...
    397  */
    398 /* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    399 int swscanf(const wchar_t *__source, const wchar_t *__format, ...)
    400 __MINGW_ASM_CALL(__mingw_swscanf);
    401 
    402 /* __attribute__((__format__ (gnu_wscanf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    403 int wscanf(const wchar_t *__format, ...)
    404 __MINGW_ASM_CALL(__mingw_wscanf);
    405 
    406 /* __attribute__((__format__ (gnu_wscanf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    407 int fwscanf(FILE *__stream, const wchar_t *__format, ...)
    408 __MINGW_ASM_CALL(__mingw_fwscanf);
    409 
    410 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
    411 /* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    412 int vswscanf (const wchar_t *__source, const wchar_t *__format, __builtin_va_list __local_argv)
    413 __MINGW_ASM_CALL(__mingw_vswscanf);
    414 
    415 /* __attribute__((__format__ (gnu_wscanf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    416 int vwscanf(const wchar_t *__format,  __builtin_va_list __local_argv)
    417 __MINGW_ASM_CALL(__mingw_vwscanf);
    418 
    419 /* __attribute__((__format__ (gnu_wscanf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    420 int vfwscanf (FILE *__stream,  const wchar_t *__format, __builtin_va_list __local_argv)
    421 __MINGW_ASM_CALL(__mingw_vfwscanf);
    422 #endif /* __NO_ISOCEXT */
    423 
    424 
    425 
    426 /* __attribute__((__format__ (gnu_wprintf, 2, 3))) */ __MINGW_ATTRIB_NONNULL(2)
    427 int fwprintf (FILE *__stream, const wchar_t *__format, ...)
    428 __MINGW_ASM_CALL(__mingw_fwprintf);
    429 
    430 /* __attribute__((__format__ (gnu_wprintf, 1, 2))) */ __MINGW_ATTRIB_NONNULL(1)
    431 int wprintf (const wchar_t *__format, ...)
    432 __MINGW_ASM_CALL(__mingw_wprintf);
    433 
    434 /* __attribute__((__format__ (gnu_wprintf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2)
    435 int vfwprintf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv)
    436 __MINGW_ASM_CALL(__mingw_vfwprintf);
    437 
    438 /* __attribute__((__format__ (gnu_wprintf, 1, 0))) */ __MINGW_ATTRIB_NONNULL(1)
    439 int vwprintf (const wchar_t *__format, __builtin_va_list __local_argv)
    440 __MINGW_ASM_CALL(__mingw_vwprintf);
    441 
    442 /* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    443 int swprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
    444 __MINGW_ASM_CALL(__mingw_swprintf);
    445 
    446 /* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    447 int vswprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv)
    448 __MINGW_ASM_CALL(__mingw_vswprintf);
    449 
    450 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
    451 
    452 /* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
    453 int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
    454 __MINGW_ASM_CALL(__mingw_snwprintf);
    455 
    456 /* __attribute__((__format__ (gnu_wprintf, 3, 0))) */ __MINGW_ATTRIB_NONNULL(3)
    457 int vsnwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv)
    458 __MINGW_ASM_CALL(__mingw_vsnwprintf);
    459 
    460 #endif /* __NO_ISOCEXT */
    461 
    462 #else /* !__USE_MINGW_ANSI_STDIO */
    463 
    464 #ifdef _UCRT
    465   __MINGW_ATTRIB_DEPRECATED_SEC_WARN
    466   int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    467   __MINGW_ATTRIB_DEPRECATED_SEC_WARN
    468   int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
    469   __MINGW_ATTRIB_DEPRECATED_SEC_WARN
    470   int __cdecl wscanf(const wchar_t * __restrict__ _Format,...);
    471   __MINGW_ATTRIB_NONNULL(2)
    472   int vfwscanf (FILE *__stream,  const wchar_t *__format, va_list __local_argv);
    473 
    474   __MINGW_ATTRIB_NONNULL(2)
    475   int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, va_list __local_argv);
    476   __MINGW_ATTRIB_NONNULL(1)
    477   int vwscanf(const wchar_t *__format, va_list __local_argv);
    478 
    479   int __cdecl fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    480   int __cdecl wprintf(const wchar_t * __restrict__ _Format,...);
    481   int __cdecl vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
    482   int __cdecl vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
    483 
    484   int __cdecl swprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...);
    485   int __cdecl vswprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args);
    486 #else
    487 
    488   int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    489   int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    490   int __cdecl wscanf(const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    491 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
    492   __MINGW_ATTRIB_NONNULL(2)
    493   int vfwscanf (FILE *__stream,  const wchar_t *__format, __builtin_va_list __local_argv);
    494 
    495   __MINGW_ATTRIB_NONNULL(2)
    496    int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, __builtin_va_list __local_argv);
    497 
    498   __MINGW_ATTRIB_NONNULL(1)
    499   int vwscanf(const wchar_t *__format,  __builtin_va_list __local_argv);
    500 #endif /* __NO_ISOCEXT */
    501 
    502   int __cdecl fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    503   int __cdecl wprintf(const wchar_t * __restrict__ _Format,...);
    504   int __cdecl vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
    505   int __cdecl vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
    506 
    507   int __cdecl swprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...);
    508   int __cdecl vswprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args);
    509 #endif /* _UCRT */
    510 #endif /* __USE_MINGW_ANSI_STDIO */
    511 
    512 
    513 #ifndef WEOF
    514 #define WEOF (wint_t)(0xFFFF)
    515 #endif
    516 
    517 #ifdef _POSIX_
    518   _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode);
    519 #else
    520   _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag);
    521 #endif
    522 
    523   wint_t __cdecl fgetwc(FILE *_File);
    524   _CRTIMP wint_t __cdecl _fgetwchar(void);
    525   wint_t __cdecl fputwc(wchar_t _Ch,FILE *_File);
    526   _CRTIMP wint_t __cdecl _fputwchar(wchar_t _Ch);
    527   wint_t __cdecl getwc(FILE *_File);
    528   wint_t __cdecl getwchar(void);
    529   wint_t __cdecl putwc(wchar_t _Ch,FILE *_File);
    530   wint_t __cdecl putwchar(wchar_t _Ch);
    531   wint_t __cdecl ungetwc(wint_t _Ch,FILE *_File);
    532   wchar_t *__cdecl fgetws(wchar_t * __restrict__ _Dst,int _SizeInWords,FILE * __restrict__ _File);
    533   int __cdecl fputws(const wchar_t * __restrict__ _Str,FILE * __restrict__ _File);
    534   _CRTIMP wchar_t *__cdecl _getws(wchar_t *_String) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    535   _CRTIMP int __cdecl _putws(const wchar_t *_Str);
    536 
    537 #ifdef _UCRT
    538   __mingw_ovr
    539   int __cdecl _scwprintf(const wchar_t * __restrict__ _Format,...)
    540   {
    541     __builtin_va_list __ap;
    542     int __ret;
    543     __builtin_va_start(__ap, _Format);
    544     __ret = __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, NULL, __ap);
    545     __builtin_va_end(__ap);
    546     return __ret;
    547   }
    548   int __cdecl _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    549   __mingw_ovr __MINGW_ATTRIB_DEPRECATED_SEC_WARN
    550   int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args)
    551   {
    552     return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Dest, _Count, _Format, NULL, _Args);
    553   }
    554 
    555 #if __USE_MINGW_ANSI_STDIO == 0
    556   int snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...);
    557   int __cdecl vsnwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, va_list arg);
    558 #endif
    559 
    560 #else
    561   _CRTIMP int __cdecl _scwprintf(const wchar_t * __restrict__ _Format,...);
    562   _CRTIMP int __cdecl _swprintf_l(wchar_t * __restrict__ ,size_t _SizeInWords,const wchar_t * __restrict__ _Format,_locale_t _Locale,... ) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    563   _CRTIMP int __cdecl _swprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,...);
    564   _CRTIMP int __cdecl _vswprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,va_list _ArgList);
    565   _CRTIMP int __cdecl _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    566   _CRTIMP int __cdecl _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    567 
    568 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
    569 
    570 #if __USE_MINGW_ANSI_STDIO == 0
    571 #pragma push_macro("snwprintf")
    572 #pragma push_macro("vsnwprintf")
    573 # undef snwprintf
    574 # undef vsnwprintf
    575   int __cdecl snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...) __MINGW_ASM_CALL(__ms_snwprintf);
    576   int __cdecl vsnwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, va_list arg) __MINGW_ASM_CALL(__ms_vsnwprintf);
    577 #pragma pop_macro ("vsnwprintf")
    578 #pragma pop_macro ("snwprintf")
    579 #endif
    580 
    581 #endif /* _UCRT */
    582 
    583 #endif /* _WSTDIO_DEFINED */
    584 
    585 
    586 #ifdef _UCRT
    587   __mingw_ovr int __cdecl _vfwscanf_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    588   {
    589     return __stdio_common_vfwscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS, _File, _Format, _Locale, _ArgList);
    590   }
    591 
    592   __mingw_ovr int __cdecl _vwscanf_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    593   {
    594     return _vfwscanf_l(stdin, _Format, _Locale, _ArgList);
    595   }
    596 
    597   __mingw_ovr int __cdecl _fwscanf_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
    598   {
    599     __builtin_va_list _ArgList;
    600     int _Ret;
    601     __builtin_va_start(_ArgList, _Locale);
    602     _Ret = _vfwscanf_l(_File, _Format, _Locale, _ArgList);
    603     __builtin_va_end(_ArgList);
    604     return _Ret;
    605   }
    606   __mingw_ovr int __cdecl _wscanf_l(const wchar_t *_Format, _locale_t _Locale, ...)
    607   {
    608     __builtin_va_list _ArgList;
    609     int _Ret;
    610     __builtin_va_start(_ArgList, _Locale);
    611     _Ret = _vfwscanf_l(stdin, _Format, _Locale, _ArgList);
    612     __builtin_va_end(_ArgList);
    613     return _Ret;
    614   }
    615 
    616   __mingw_ovr int __cdecl _vsnwscanf_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    617   {
    618     return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS, _Src, _MaxCount, _Format, _Locale, _ArgList);
    619   }
    620   __mingw_ovr int __cdecl _snwscanf_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
    621   {
    622     __builtin_va_list _ArgList;
    623     int _Ret;
    624     __builtin_va_start(_ArgList, _Locale);
    625     _Ret = _vsnwscanf_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
    626     __builtin_va_end(_ArgList);
    627     return _Ret;
    628   }
    629   __mingw_ovr int __cdecl _snwscanf(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, ...)
    630   {
    631     __builtin_va_list _ArgList;
    632     int _Ret;
    633     __builtin_va_start(_ArgList, _Format);
    634     _Ret = _vsnwscanf_l(_Src, _MaxCount, _Format, NULL, _ArgList);
    635     __builtin_va_end(_ArgList);
    636     return _Ret;
    637   }
    638 
    639   __mingw_ovr int __cdecl _vswscanf_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    640   {
    641     return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS, _Src, (size_t)-1, _Format, _Locale, _ArgList);
    642   }
    643   __mingw_ovr int __cdecl _swscanf_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, ...)
    644   {
    645     __builtin_va_list _ArgList;
    646     int _Ret;
    647     __builtin_va_start(_ArgList, _Locale);
    648     _Ret = _vswscanf_l(_Src, _Format, _Locale, _ArgList);
    649     __builtin_va_end(_ArgList);
    650     return _Ret;
    651   }
    652 
    653   __mingw_ovr int __cdecl _vfwprintf_p_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    654   {
    655     return __stdio_common_vfwprintf_p(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _File, _Format, _Locale, _ArgList);
    656   }
    657   __mingw_ovr int __cdecl _vwprintf_p_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    658   {
    659     return _vfwprintf_p_l(stdout, _Format, _Locale, _ArgList);
    660   }
    661   __mingw_ovr int __cdecl _vfwprintf_p(FILE *_File, const wchar_t *_Format, va_list _ArgList)
    662   {
    663     return _vfwprintf_p_l(_File, _Format, NULL, _ArgList);
    664   }
    665   __mingw_ovr int __cdecl _vwprintf_p(const wchar_t *_Format, va_list _ArgList)
    666   {
    667     return _vfwprintf_p_l(stdout, _Format, NULL, _ArgList);
    668   }
    669   __mingw_ovr int __cdecl _fwprintf_p_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
    670   {
    671     __builtin_va_list _ArgList;
    672     int _Ret;
    673     __builtin_va_start(_ArgList, _Locale);
    674     _Ret = _vfwprintf_p_l(_File, _Format, _Locale, _ArgList);
    675     __builtin_va_end(_ArgList);
    676     return _Ret;
    677   }
    678   __mingw_ovr int __cdecl _wprintf_p_l(const wchar_t *_Format, _locale_t _Locale, ...)
    679   {
    680     __builtin_va_list _ArgList;
    681     int _Ret;
    682     __builtin_va_start(_ArgList, _Locale);
    683     _Ret = _vfwprintf_p_l(stdout, _Format, _Locale, _ArgList);
    684     __builtin_va_end(_ArgList);
    685     return _Ret;
    686   }
    687   __mingw_ovr int __cdecl _fwprintf_p(FILE *_File, const wchar_t *_Format, ...)
    688   {
    689     __builtin_va_list _ArgList;
    690     int _Ret;
    691     __builtin_va_start(_ArgList, _Format);
    692     _Ret = _vfwprintf_p_l(_File, _Format, NULL, _ArgList);
    693     __builtin_va_end(_ArgList);
    694     return _Ret;
    695   }
    696   __mingw_ovr int __cdecl _wprintf_p(const wchar_t *_Format, ...)
    697   {
    698     __builtin_va_list _ArgList;
    699     int _Ret;
    700     __builtin_va_start(_ArgList, _Format);
    701     _Ret = _vfwprintf_p_l(stdout, _Format, NULL, _ArgList);
    702     __builtin_va_end(_ArgList);
    703     return _Ret;
    704   }
    705 
    706   __mingw_ovr int __cdecl _vfwprintf_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    707   {
    708     return __stdio_common_vfwprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _File, _Format, _Locale, _ArgList);
    709   }
    710   __mingw_ovr int __cdecl _vwprintf_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    711   {
    712     return _vfwprintf_l(stdout, _Format, _Locale, _ArgList);
    713   }
    714   __mingw_ovr int __cdecl _fwprintf_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
    715   {
    716     __builtin_va_list _ArgList;
    717     int _Ret;
    718     __builtin_va_start(_ArgList, _Locale);
    719     _Ret = _vfwprintf_l(_File, _Format, _Locale, _ArgList);
    720     __builtin_va_end(_ArgList);
    721     return _Ret;
    722   }
    723   __mingw_ovr int __cdecl _wprintf_l(const wchar_t *_Format, _locale_t _Locale, ...)
    724   {
    725     __builtin_va_list _ArgList;
    726     int _Ret;
    727     __builtin_va_start(_ArgList, _Locale);
    728     _Ret = _vfwprintf_l(stdout, _Format, _Locale, _ArgList);
    729     __builtin_va_end(_ArgList);
    730     return _Ret;
    731   }
    732 
    733   __mingw_ovr int __cdecl _vswprintf_p_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    734   {
    735     return __stdio_common_vswprintf_p(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    736   }
    737   __mingw_ovr int __cdecl _vswprintf_p(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
    738   {
    739     return _vswprintf_p_l(_DstBuf, _MaxCount, _Format, NULL, _ArgList);
    740   }
    741   __mingw_ovr int __cdecl _swprintf_p_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
    742   {
    743     __builtin_va_list _ArgList;
    744     int _Ret;
    745     __builtin_va_start(_ArgList, _Locale);
    746     _Ret = _vswprintf_p_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    747     __builtin_va_end(_ArgList);
    748     return _Ret;
    749   }
    750   __mingw_ovr int __cdecl _swprintf_p(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, ...)
    751   {
    752     __builtin_va_list _ArgList;
    753     int _Ret;
    754     __builtin_va_start(_ArgList, _Format);
    755     _Ret = _vswprintf_p_l(_DstBuf, _MaxCount, _Format, NULL, _ArgList);
    756     __builtin_va_end(_ArgList);
    757     return _Ret;
    758   }
    759 
    760   __mingw_ovr int __cdecl _vsnwprintf_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    761   {
    762     return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    763   }
    764   __mingw_ovr int __cdecl _snwprintf_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
    765   {
    766     __builtin_va_list _ArgList;
    767     int _Ret;
    768     __builtin_va_start(_ArgList, _Locale);
    769     _Ret = _vsnwprintf_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    770     __builtin_va_end(_ArgList);
    771     return _Ret;
    772   }
    773 
    774   __mingw_ovr int __cdecl _vscwprintf_p_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    775   {
    776     return __stdio_common_vswprintf_p(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, _Locale, _ArgList);
    777   }
    778   __mingw_ovr int __cdecl _vscwprintf_p(const wchar_t *_Format, va_list _ArgList)
    779   {
    780     return _vscwprintf_p_l(_Format, NULL, _ArgList);
    781   }
    782   __mingw_ovr int __cdecl _scwprintf_p_l(const wchar_t *_Format, _locale_t _Locale, ...)
    783   {
    784     __builtin_va_list _ArgList;
    785     int _Ret;
    786     __builtin_va_start(_ArgList, _Locale);
    787     _Ret = _vscwprintf_p_l(_Format, _Locale, _ArgList);
    788     __builtin_va_end(_ArgList);
    789     return _Ret;
    790   }
    791   __mingw_ovr int __cdecl _scwprintf_p(const wchar_t *_Format, ...)
    792   {
    793     __builtin_va_list _ArgList;
    794     int _Ret;
    795     __builtin_va_start(_ArgList, _Format);
    796     _Ret = _vscwprintf_p_l(_Format, NULL, _ArgList);
    797     __builtin_va_end(_ArgList);
    798     return _Ret;
    799   }
    800 
    801   __mingw_ovr int __cdecl _vscwprintf_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    802   {
    803     return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, NULL, 0, _Format, _Locale, _ArgList);
    804   }
    805   __mingw_ovr int __cdecl _vscwprintf(const wchar_t *_Format, va_list _ArgList)
    806   {
    807     return _vscwprintf_l(_Format, NULL, _ArgList);
    808   }
    809   __mingw_ovr int __cdecl _scwprintf_l(const wchar_t *_Format, _locale_t _Locale, ...)
    810   {
    811     __builtin_va_list _ArgList;
    812     int _Ret;
    813     __builtin_va_start(_ArgList, _Locale);
    814     _Ret = _vscwprintf_l(_Format, _Locale, _ArgList);
    815     __builtin_va_end(_ArgList);
    816     return _Ret;
    817   }
    818 
    819   __mingw_ovr int __cdecl _vswprintf_c_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    820   {
    821     return __stdio_common_vswprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    822   }
    823   __mingw_ovr int __cdecl __vswprintf_l(wchar_t *_DstBuf, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    824   {
    825     return _vswprintf_c_l(_DstBuf, (size_t)-1, _Format, _Locale, _ArgList);
    826   }
    827   __mingw_ovr int __cdecl _vswprintf_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
    828   {
    829     return _vswprintf_c_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    830   }
    831   __mingw_ovr int __cdecl _vswprintf(wchar_t *_DstBuf, const wchar_t *_Format, va_list _ArgList)
    832   {
    833     return _vswprintf_c_l(_DstBuf, (size_t)-1, _Format, NULL, _ArgList);
    834   }
    835   __mingw_ovr int __cdecl _swprintf_c_l(wchar_t *_DstBuf, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
    836   {
    837     __builtin_va_list _ArgList;
    838     int _Ret;
    839     __builtin_va_start(_ArgList, _Locale);
    840     _Ret = _vswprintf_c_l(_DstBuf, _MaxCount, _Format, _Locale, _ArgList);
    841     __builtin_va_end(_ArgList);
    842     return _Ret;
    843   }
    844   __mingw_ovr int __cdecl __swprintf_l(wchar_t *_DstBuf, const wchar_t *_Format, _locale_t _Locale, ...)
    845   {
    846     __builtin_va_list _ArgList;
    847     int _Ret;
    848     __builtin_va_start(_ArgList, _Locale);
    849     _Ret = _vswprintf_c_l(_DstBuf, (size_t)-1, _Format, _Locale, _ArgList);
    850     __builtin_va_end(_ArgList);
    851     return _Ret;
    852   }
    853   __mingw_ovr int __cdecl _swprintf(wchar_t *_DstBuf, const wchar_t *_Format, ...)
    854   {
    855     __builtin_va_list _ArgList;
    856     int _Ret;
    857     __builtin_va_start(_ArgList, _Format);
    858     _Ret = _vswprintf_c_l(_DstBuf, (size_t)-1, _Format, NULL, _ArgList);
    859     __builtin_va_end(_ArgList);
    860     return _Ret;
    861   }
    862 #else /* _UCRT */
    863   _CRTIMP int __cdecl _fwprintf_p(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
    864   _CRTIMP int __cdecl _wprintf_p(const wchar_t * __restrict__ _Format,...);
    865   _CRTIMP int __cdecl _vfwprintf_p(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
    866   _CRTIMP int __cdecl _vwprintf_p(const wchar_t * __restrict__ _Format,va_list _ArgList);
    867   _CRTIMP int __cdecl _swprintf_p(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,...);
    868   _SECIMP int __cdecl _vswprintf_p(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,va_list _ArgList);
    869   _CRTIMP int __cdecl _scwprintf_p(const wchar_t * __restrict__ _Format,...);
    870   _SECIMP int __cdecl _vscwprintf_p(const wchar_t * __restrict__ _Format,va_list _ArgList);
    871   _CRTIMP int __cdecl _wprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    872   _CRTIMP int __cdecl _wprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    873   _CRTIMP int __cdecl _vwprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    874   _CRTIMP int __cdecl _vwprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    875   _CRTIMP int __cdecl _fwprintf_l(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    876   _CRTIMP int __cdecl _fwprintf_p_l(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    877   _CRTIMP int __cdecl _vfwprintf_l(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    878   _CRTIMP int __cdecl _vfwprintf_p_l(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    879   _CRTIMP int __cdecl _swprintf_c_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    880   _CRTIMP int __cdecl _swprintf_p_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    881   _CRTIMP int __cdecl _vswprintf_c_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    882   _CRTIMP int __cdecl _vswprintf_p_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    883   _CRTIMP int __cdecl _scwprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    884   _CRTIMP int __cdecl _scwprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    885   _CRTIMP int __cdecl _vscwprintf_p_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    886   _CRTIMP int __cdecl _snwprintf_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    887   _CRTIMP int __cdecl _vsnwprintf_l(wchar_t * __restrict__ _DstBuf,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    888   _CRTIMP int __cdecl _swprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,...);
    889   _CRTIMP int __cdecl _vswprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,va_list _Args);
    890   _CRTIMP int __cdecl __swprintf_l(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,_locale_t _Plocinfo,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    891   _CRTIMP int __cdecl _vswprintf_l(wchar_t * __restrict__ _Dest,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    892   _CRTIMP int __cdecl __vswprintf_l(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,_locale_t _Plocinfo,va_list _Args) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    893 #endif /* !_UCRT */
    894 
    895 #ifndef RC_INVOKED
    896 #include <swprintf.inl>
    897 #endif
    898 
    899 #ifdef _CRT_NON_CONFORMING_SWPRINTFS
    900 #ifndef __cplusplus
    901 #define _swprintf_l __swprintf_l
    902 #define _vswprintf_l __vswprintf_l
    903 #endif
    904 #endif
    905 
    906 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
    907 #pragma push_macro("_wtempnam")
    908 #undef _wtempnam
    909 #endif
    910   _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix);
    911 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
    912 #pragma pop_macro("_wtempnam")
    913 #endif
    914 
    915 #ifndef _UCRT
    916   _CRTIMP int __cdecl _vscwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
    917   _CRTIMP int __cdecl _vscwprintf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,va_list _ArgList);
    918   _CRTIMP int __cdecl _fwscanf_l(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,_locale_t _Locale,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    919   _CRTIMP int __cdecl _swscanf_l(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,_locale_t _Locale,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    920   _CRTIMP int __cdecl _snwscanf(const wchar_t * __restrict__ _Src,size_t _MaxCount,const wchar_t * __restrict__ _Format,...);
    921   _CRTIMP int __cdecl _snwscanf_l(const wchar_t * __restrict__ _Src,size_t _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...);
    922   _CRTIMP int __cdecl _wscanf_l(const wchar_t * __restrict__ _Format,_locale_t _Locale,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    923 #endif /* !_UCRT */
    924   _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode);
    925   _CRTIMP FILE *__cdecl _wfopen(const wchar_t * __restrict__ _Filename,const wchar_t * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    926   _CRTIMP FILE *__cdecl _wfreopen(const wchar_t * __restrict__ _Filename,const wchar_t * __restrict__ _Mode,FILE * __restrict__ _OldFile) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    927 
    928 #ifndef _CRT_WPERROR_DEFINED
    929 #define _CRT_WPERROR_DEFINED
    930   _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
    931 #endif
    932   _CRTIMP FILE *__cdecl _wpopen(const wchar_t *_Command,const wchar_t *_Mode);
    933 #if !defined(NO_OLDNAMES) && !defined(wpopen)
    934 #define wpopen	_wpopen
    935 #endif
    936   _CRTIMP int __cdecl _wremove(const wchar_t *_Filename);
    937   _CRTIMP wchar_t *__cdecl _wtmpnam(wchar_t *_Buffer);
    938 #if __MSVCRT_VERSION__ >= 0x800
    939   _CRTIMP wint_t __cdecl _fgetwc_nolock(FILE *_File);
    940   _CRTIMP wint_t __cdecl _fputwc_nolock(wchar_t _Ch,FILE *_File);
    941   _CRTIMP wint_t __cdecl _ungetwc_nolock(wint_t _Ch,FILE *_File);
    942 #endif
    943 
    944 #undef _CRT_GETPUTWCHAR_NOINLINE
    945 
    946 #if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE) || defined (__CRT__NO_INLINE)
    947 #define getwchar() fgetwc(stdin)
    948 #define putwchar(_c) fputwc((_c),stdout)
    949 #else
    950   __CRT_INLINE wint_t __cdecl getwchar() {return (fgetwc(stdin)); }
    951   __CRT_INLINE wint_t __cdecl putwchar(wchar_t _C) {return (fputwc(_C,stdout)); }
    952 #endif
    953 
    954 #define getwc(_stm) fgetwc(_stm)
    955 #define putwc(_c,_stm) fputwc(_c,_stm)
    956 #if __MSVCRT_VERSION__ >= 0x800
    957 #define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
    958 #define _getwc_nolock(_c) _fgetwc_nolock(_c)
    959 #endif
    960 #endif
    961 
    962 #ifndef _WSTDLIB_DEFINED
    963 #define _WSTDLIB_DEFINED
    964 
    965   _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    966   _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    967   _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    968   _CRTIMP double __cdecl _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale);
    969 
    970   double __cdecl __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr);
    971   float __cdecl __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr);
    972   long double __cdecl __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__);
    973 
    974 #if defined(__USE_MINGW_STRTOX) && !defined(_UCRT)
    975   __mingw_ovr
    976   double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){
    977     return __mingw_wcstod(_Str,_EndPtr);
    978   }
    979   __mingw_ovr
    980   float __cdecl wcstof(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){
    981     return __mingw_wcstof(_Str,_EndPtr);
    982   }
    983   /* wcstold is already a mingw implementation */
    984 #else
    985   double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr);
    986   float __cdecl wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr);
    987 #endif /* !defined(__USE_MINGW_STRTOX) || defined(_UCRT) */
    988 #if !defined __NO_ISOCEXT /* in libmingwex.a */
    989   long double __cdecl wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
    990 #endif /* __NO_ISOCEXT */
    991   long __cdecl wcstol(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix);
    992   _CRTIMP long __cdecl _wcstol_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
    993   unsigned long __cdecl wcstoul(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix);
    994   _CRTIMP unsigned long __cdecl _wcstoul_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
    995   _CRTIMP wchar_t *__cdecl _wgetenv(const wchar_t *_VarName) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
    996 #ifndef _CRT_WSYSTEM_DEFINED
    997 #define _CRT_WSYSTEM_DEFINED
    998   _CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
    999 #endif
   1000   _CRTIMP double __cdecl _wtof(const wchar_t *_Str);
   1001   _CRTIMP double __cdecl _wtof_l(const wchar_t *_Str,_locale_t _Locale);
   1002   _CRTIMP int __cdecl _wtoi(const wchar_t *_Str);
   1003   _CRTIMP int __cdecl _wtoi_l(const wchar_t *_Str,_locale_t _Locale);
   1004   _CRTIMP long __cdecl _wtol(const wchar_t *_Str);
   1005   _CRTIMP long __cdecl _wtol_l(const wchar_t *_Str,_locale_t _Locale);
   1006 
   1007   __MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _i64tow(__int64 _Val,wchar_t *_DstBuf,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1008   __MINGW_EXTENSION _CRTIMP wchar_t *__cdecl _ui64tow(unsigned __int64 _Val,wchar_t *_DstBuf,int _Radix);
   1009   __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64(const wchar_t *_Str);
   1010   __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
   1011   __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
   1012   __MINGW_EXTENSION _CRTIMP __int64 __cdecl _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
   1013   __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
   1014   __MINGW_EXTENSION _CRTIMP unsigned __int64 __cdecl _wcstoui64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
   1015 #endif
   1016 
   1017 #ifndef _POSIX_
   1018 #ifndef _WSTDLIBP_DEFINED
   1019 #define _WSTDLIBP_DEFINED
   1020 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1021 #pragma push_macro("_wfullpath")
   1022 #undef _wfullpath
   1023 #endif
   1024   _CRTIMP wchar_t *__cdecl _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords);
   1025 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1026 #pragma pop_macro("_wfullpath")
   1027 #endif
   1028   _CRTIMP void __cdecl _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
   1029 #ifndef _CRT_WPERROR_DEFINED
   1030 #define _CRT_WPERROR_DEFINED
   1031   _CRTIMP void __cdecl _wperror(const wchar_t *_ErrMsg);
   1032 #endif
   1033   _CRTIMP int __cdecl _wputenv(const wchar_t *_EnvString);
   1034   _CRTIMP void __cdecl _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1035   _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;
   1036 #endif
   1037 #endif
   1038 
   1039 #ifndef _WSTRING_DEFINED
   1040 #define _WSTRING_DEFINED
   1041 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1042 #pragma push_macro("_wcsdup")
   1043 #undef _wcsdup
   1044 #endif
   1045   _CRTIMP wchar_t *__cdecl _wcsdup(const wchar_t *_Str);
   1046 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1047 #pragma pop_macro("_wcsdup")
   1048 #endif
   1049   wchar_t *__cdecl wcscat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1050   _CONST_RETURN wchar_t *__cdecl wcschr(const wchar_t *_Str,wchar_t _Ch);
   1051   int __cdecl wcscmp(const wchar_t *_Str1,const wchar_t *_Str2);
   1052   wchar_t *__cdecl wcscpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1053   size_t __cdecl wcscspn(const wchar_t *_Str,const wchar_t *_Control);
   1054   size_t __cdecl wcslen(const wchar_t *_Str);
   1055   size_t __cdecl wcsnlen(const wchar_t *_Src,size_t _MaxCount);
   1056   wchar_t *__cdecl wcsncat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1057   int __cdecl wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
   1058   wchar_t *__cdecl wcsncpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1059   wchar_t *__cdecl _wcsncpy_l(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1060   _CONST_RETURN wchar_t *__cdecl wcspbrk(const wchar_t *_Str,const wchar_t *_Control);
   1061   _CONST_RETURN wchar_t *__cdecl wcsrchr(const wchar_t *_Str,wchar_t _Ch);
   1062   size_t __cdecl wcsspn(const wchar_t *_Str,const wchar_t *_Control);
   1063   _CONST_RETURN wchar_t *__cdecl wcsstr(const wchar_t *_Str,const wchar_t *_SubStr);
   1064   wchar_t *__cdecl wcstok(wchar_t * __restrict__ _Str,const wchar_t * __restrict__ _Delim,wchar_t ** __restrict__ _Ptr) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1065   wchar_t *__cdecl _wcstok(wchar_t * __restrict__ _Str,const wchar_t * __restrict__ _Delim) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1066 #if defined(_CRT_NON_CONFORMING_WCSTOK) && !defined(__cplusplus)
   1067   #define wcstok _wcstok
   1068 #endif
   1069 #if !defined(_CRT_NO_INLINE_DEPRECATED_WCSTOK) && defined(__cplusplus)
   1070   extern "C++" inline wchar_t *__cdecl wcstok(wchar_t * __restrict__ _Str,const wchar_t * __restrict__ _Delim) { return _wcstok(_Str, _Delim); }
   1071 #endif
   1072   _CRTIMP wchar_t *__cdecl _wcserror(int _ErrNum) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1073   _CRTIMP wchar_t *__cdecl __wcserror(const wchar_t *_Str) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1074   _CRTIMP int __cdecl _wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
   1075   _CRTIMP int __cdecl _wcsicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
   1076   _CRTIMP int __cdecl _wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
   1077   _CRTIMP int __cdecl _wcsnicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
   1078   _CRTIMP wchar_t *__cdecl _wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1079   _CRTIMP wchar_t *__cdecl _wcsrev(wchar_t *_Str);
   1080   _CRTIMP wchar_t *__cdecl _wcsset(wchar_t *_Str,wchar_t _Val) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1081   _CRTIMP wchar_t *__cdecl _wcslwr(wchar_t *_String) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1082   _CRTIMP wchar_t *_wcslwr_l(wchar_t *_String,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1083   _CRTIMP wchar_t *__cdecl _wcsupr(wchar_t *_String) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1084   _CRTIMP wchar_t *_wcsupr_l(wchar_t *_String,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1085   size_t __cdecl wcsxfrm(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount);
   1086   _CRTIMP size_t __cdecl _wcsxfrm_l(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount,_locale_t _Locale);
   1087   int __cdecl wcscoll(const wchar_t *_Str1,const wchar_t *_Str2);
   1088   _CRTIMP int __cdecl _wcscoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
   1089   _CRTIMP int __cdecl _wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
   1090   _CRTIMP int __cdecl _wcsicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
   1091   _CRTIMP int __cdecl _wcsncoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
   1092   _CRTIMP int __cdecl _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
   1093   _CRTIMP int __cdecl _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
   1094   _CRTIMP int __cdecl _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
   1095 
   1096 #ifndef	NO_OLDNAMES
   1097 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1098 #pragma push_macro("wcsdup")
   1099 #undef wcsdup
   1100 #endif
   1101   wchar_t *__cdecl wcsdup(const wchar_t *_Str) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1102 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
   1103 #pragma pop_macro("wcsdup")
   1104 #endif
   1105 #define wcswcs wcsstr
   1106   int __cdecl wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1107   int __cdecl wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1108   wchar_t *__cdecl wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1109   wchar_t *__cdecl wcsrev(wchar_t *_Str) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1110   wchar_t *__cdecl wcsset(wchar_t *_Str,wchar_t _Val) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1111   wchar_t *__cdecl wcslwr(wchar_t *_Str) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1112   wchar_t *__cdecl wcsupr(wchar_t *_Str) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1113   int __cdecl wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
   1114 #endif
   1115 #endif
   1116 
   1117 #ifndef _TM_DEFINED
   1118 #define _TM_DEFINED
   1119   struct tm {
   1120     int tm_sec;
   1121     int tm_min;
   1122     int tm_hour;
   1123     int tm_mday;
   1124     int tm_mon;
   1125     int tm_year;
   1126     int tm_wday;
   1127     int tm_yday;
   1128     int tm_isdst;
   1129   };
   1130 #endif
   1131 
   1132 #ifndef _WTIME_DEFINED
   1133 #define _WTIME_DEFINED
   1134 
   1135   _CRTIMP wchar_t *__cdecl _wasctime(const struct tm *_Tm);
   1136   _SECIMP errno_t __cdecl _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
   1137   wchar_t *__cdecl _wctime32(const __time32_t *_Time) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1138   _SECIMP errno_t __cdecl _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
   1139   size_t __cdecl wcsftime(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm);
   1140   _CRTIMP size_t __cdecl _wcsftime_l(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm,_locale_t _Locale);
   1141   _CRTIMP wchar_t *__cdecl _wstrdate(wchar_t *_Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1142   _SECIMP errno_t __cdecl _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords);
   1143   _CRTIMP wchar_t *__cdecl _wstrtime(wchar_t *_Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1144   _SECIMP errno_t __cdecl _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords);
   1145   _CRTIMP wchar_t *__cdecl _wctime64(const __time64_t *_Time) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1146   _SECIMP errno_t __cdecl _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
   1147 
   1148 #if !defined (RC_INVOKED) && !defined (_INC_WTIME_INL)
   1149 #define _INC_WTIME_INL
   1150   wchar_t *__cdecl _wctime(const time_t *_Time) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1151 #ifndef __CRT__NO_INLINE
   1152 #ifndef _USE_32BIT_TIME_T
   1153   __CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime64(_Time); }
   1154 #else
   1155   __CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime32(_Time); }
   1156 #endif
   1157 #endif /* __CRT__NO_INLINE */
   1158 #endif
   1159 
   1160 #if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
   1161 #define _INC_WTIME_S_INL
   1162   errno_t __cdecl _wctime_s(wchar_t *, size_t, const time_t *);
   1163 #ifndef __CRT__NO_INLINE
   1164 #ifndef _USE_32BIT_TIME_T
   1165   __CRT_INLINE errno_t __cdecl _wctime_s (wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s (_Buffer,_SizeInWords,_Time); }
   1166 #else
   1167   __CRT_INLINE errno_t __cdecl _wctime_s (wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime32_s (_Buffer,_SizeInWords,_Time); }
   1168 #endif /* _USE_32BIT_TIME_T */
   1169 #endif  /* __CRT__NO_INLINE */
   1170 #endif /* !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL) */
   1171 
   1172 #endif
   1173 
   1174 #if defined(_UCRT) || defined(__LARGE_MBSTATE_T)
   1175   typedef struct _Mbstatet {
   1176     unsigned long _Wchar;
   1177     unsigned short _Byte, _State;
   1178   } _Mbstatet;
   1179   typedef _Mbstatet mbstate_t;
   1180 #else
   1181   typedef int mbstate_t;
   1182 #endif
   1183   typedef wchar_t _Wint_t;
   1184 
   1185   wint_t __cdecl btowc(int);
   1186   size_t __cdecl mbrlen(const char * __restrict__ _Ch,size_t _SizeInBytes,mbstate_t * __restrict__ _State);
   1187   size_t __cdecl mbrtowc(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SizeInBytes,mbstate_t * __restrict__ _State);
   1188   size_t __cdecl mbsrtowcs(wchar_t * __restrict__ _Dest,const char ** __restrict__ _PSrc,size_t _Count,mbstate_t * __restrict__ _State) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1189   size_t __cdecl wcrtomb(char * __restrict__ _Dest,wchar_t _Source,mbstate_t * __restrict__ _State) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1190   size_t __cdecl wcsrtombs(char * __restrict__ _Dest,const wchar_t ** __restrict__ _PSource,size_t _Count,mbstate_t * __restrict__ _State) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1191   int __cdecl wctob(wint_t _WCh);
   1192 
   1193 #ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
   1194   wchar_t *__cdecl wmemset(wchar_t *s, wchar_t c, size_t n);
   1195   _CONST_RETURN wchar_t *__cdecl wmemchr(const wchar_t *s, wchar_t c, size_t n);
   1196   int __cdecl wmemcmp(const wchar_t *s1, const wchar_t *s2,size_t n);
   1197   wchar_t *__cdecl wmemcpy(wchar_t * __restrict__ s1,const wchar_t * __restrict__ s2,size_t n) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1198   wchar_t * __cdecl wmempcpy (wchar_t *_Dst, const wchar_t *_Src, size_t _Size);
   1199   wchar_t *__cdecl wmemmove(wchar_t *s1, const wchar_t *s2, size_t n) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1200   int __cdecl fwide(FILE *stream,int mode);
   1201 #if defined(_UCRT) || defined(__LARGE_MBSTATE_T)
   1202   /* With UCRT, mbsinit is only available as inline. */
   1203   __mingw_ovr int __cdecl mbsinit(const mbstate_t *_P) { return (!_P || _P->_Wchar == 0); }
   1204 #else
   1205   int __cdecl mbsinit(const mbstate_t *ps);
   1206 #endif
   1207   __MINGW_EXTENSION long long __cdecl wcstoll(const wchar_t * __restrict__ nptr,wchar_t ** __restrict__ endptr, int base);
   1208   __MINGW_EXTENSION unsigned long long __cdecl wcstoull(const wchar_t * __restrict__ nptr,wchar_t ** __restrict__ endptr, int base);
   1209 #endif /* __NO_ISOCEXT */
   1210 
   1211   void *__cdecl memmove(void *_Dst,const void *_Src,size_t _MaxCount);
   1212   void *__cdecl memcpy(void * __restrict__ _Dst,const void * __restrict__ _Src,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   1213 #ifndef __CRT__NO_INLINE
   1214   __CRT_INLINE int __cdecl fwide(FILE *_F,int _M) { (void)_F; return (_M); }
   1215 #if !defined(_UCRT) && !defined(__LARGE_MBSTATE_T)
   1216   __CRT_INLINE int __cdecl mbsinit(const mbstate_t *_P) { return (!_P || *_P==0); }
   1217 #endif
   1218   __CRT_INLINE _CONST_RETURN wchar_t *__cdecl wmemchr(const wchar_t *_S,wchar_t _C,size_t _N) {
   1219     if (_S) {
   1220       for ( ; 0 < _N; ++_S, --_N)
   1221 	if (*_S == _C)
   1222 	  return (_CONST_RETURN wchar_t *)(_S);
   1223     }
   1224     return (_CONST_RETURN wchar_t *) NULL;
   1225   }
   1226   __CRT_INLINE int __cdecl wmemcmp(const wchar_t *_S1,const wchar_t *_S2,size_t _N) {
   1227     if (_N == 0 || _S1 == _S2)
   1228       return 0;	/* even for NULL pointers.  */
   1229     if ((_S1 && !(_S2)) || (_S2 && !(_S1)))
   1230       return !(_S2) ? 1 : -1; /* robust.  */
   1231     for ( ; 0 < _N; ++_S1, ++_S2, --_N)
   1232       if (*_S1 != *_S2)
   1233 	return (*_S1 < *_S2 ? -1 : +1);
   1234     return 0;
   1235   }
   1236   __CRT_INLINE wchar_t *__cdecl wmemcpy(wchar_t * __restrict__ _S1,const wchar_t * __restrict__ _S2,size_t _N)
   1237   {
   1238     return (wchar_t *) memcpy (_S1,_S2,_N*sizeof(wchar_t));
   1239   }
   1240   __CRT_INLINE wchar_t *__cdecl wmemmove(wchar_t *_S1,const wchar_t *_S2,size_t _N) { return (wchar_t *)memmove(_S1,_S2,_N*sizeof(wchar_t)); }
   1241   __CRT_INLINE wchar_t *__cdecl wmemset(wchar_t *_S,wchar_t _C,size_t _N) {
   1242     wchar_t *_Su = _S;
   1243     for (;0<_N;++_Su,--_N) {
   1244       *_Su = _C;
   1245     }
   1246     return (_S);
   1247   }
   1248 #endif /* !__CRT__NO_INLINE */
   1249 
   1250 #ifndef __MINGW_MBWC_CONVERT_DEFINED
   1251 #define __MINGW_MBWC_CONVERT_DEFINED
   1252 
   1253 /**
   1254  * __mingw_str_wide_utf8
   1255  * Converts a null terminated UCS-2 string to a multibyte (UTF-8) equivalent.
   1256  * Caller is supposed to free allocated buffer with __mingw_str_free().
   1257  * @param[in] wptr Pointer to wide string.
   1258  * @param[out] mbptr Pointer to multibyte string.
   1259  * @param[out] buflen Optional parameter for length of allocated buffer.
   1260  * @return bytes written by WideCharToMultiByte conversion, 0 for failure.
   1261  *
   1262  * WideCharToMultiByte - http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx
   1263  */
   1264 int __cdecl __mingw_str_wide_utf8 (const wchar_t * const wptr, char **mbptr, size_t * buflen);
   1265 
   1266 /**
   1267  * __mingw_str_utf8_wide
   1268  * Converts a null terminated UTF-8 string to a UCS-2 equivalent.
   1269  * Caller is supposed to free allocated buffer with __mingw_str_free().
   1270  * @param[out] mbptr Pointer to multibyte string.
   1271  * @param[in] wptr Pointer to wide string.
   1272  * @param[out] buflen Optional parameter for length of allocated buffer.
   1273  * @return bytes written by WideCharToMultiByte conversion, 0 for failure.
   1274  *
   1275  * MultiByteToWideChar - http://msdn.microsoft.com/en-us/library/dd319072(VS.85).aspx
   1276  */
   1277 
   1278 int __cdecl __mingw_str_utf8_wide (const char *const mbptr, wchar_t ** wptr, size_t * buflen);
   1279 
   1280 /**
   1281  * __mingw_str_free
   1282  * Frees buffer create by __mingw_str_wide_utf8 and __mingw_str_utf8_wide.
   1283  * @param[in] ptr memory block to free.
   1284  *
   1285  */
   1286 
   1287 void __cdecl __mingw_str_free(void *ptr);
   1288 
   1289 #endif /* __MINGW_MBWC_CONVERT_DEFINED */
   1290 
   1291 #ifdef __cplusplus
   1292 }
   1293 #endif
   1294 
   1295 #pragma pack(pop)
   1296 
   1297 #include <sec_api/wchar_s.h>
   1298 
   1299 #endif /* _INC_WCHAR */
   1300