Hi, here're 3 patches to deduplicate sec_api headers:
0001-headers-merge-stralign_s.h-into-stralign.h
0002-headers-crt-split-out-wstdio_s.h
0003-headers-wchar_s.h-Drop-io-and-time-symbols
BTW, I wonder if we still want to keep these sec_api headers. After previous
cleanup of wchar.h, most of these headers are very small now (lots of <50 lines,
largest ones <300 lines). Maybe we could just merge all of them back to there
non-secure parents, and align with MSVC UCRT?
From 67a2647c6b8f2e36ae924905043bf582939ae45b Mon Sep 17 00:00:00 2001
From: Zhongteng Gui <[email protected]>
Date: Thu, 27 Aug 2026 15:34:27 +0800
Subject: [PATCH 1/3] headers: merge stralign_s.h into stralign.h
stralign_s.h is only used by stralign.h, and it's actually not part of
CRT headers. Plus, stralign_s.h is not provided by MSVC UCRT, so it can
be dropped safely.
Note that our stralign.h differs from MSVC UCRT's stralign.h a lot,
which may need further adjustments.
Also updated configure{,.ac} to remove stralign_s.h.
Signed-off-by: Zhongteng Gui <[email protected]>
---
mingw-w64-headers/configure | 1 -
mingw-w64-headers/configure.ac | 1 -
mingw-w64-headers/crt/sec_api/stralign_s.h | 24 ----------------------
mingw-w64-headers/include/stralign.h | 10 ++++++++-
4 files changed, 9 insertions(+), 27 deletions(-)
delete mode 100644 mingw-w64-headers/crt/sec_api/stralign_s.h
diff --git a/mingw-w64-headers/configure b/mingw-w64-headers/configure
index 38e4a135d..ef326dca7 100755
--- a/mingw-w64-headers/configure
+++ b/mingw-w64-headers/configure
@@ -2757,7 +2757,6 @@ fi
# Checks for header files.
BASEHEAD_LIST="crt/_bsd_types.h crt/_cygwin.h crt/_mingw.h crt/_mingw_mac.h
crt/_mingw_secapi.h crt/_mingw_unicode.h crt/_timeval.h crt/crtdefs.h
crt/corecrt.h crt/excpt.h crt/intrin.h crt/vadefs.h crt/tchar.h
"$srcdir/include/*.h
-SECHEAD_LIST="$srcdir/crt/sec_api/stralign_s.h"
for i in c inl dlg h16 hxx rh ver; do
BASEHEAD_LIST="$BASEHEAD_LIST "$srcdir/include/*.$i
done
diff --git a/mingw-w64-headers/configure.ac b/mingw-w64-headers/configure.ac
index f88024045..e943d7c66 100644
--- a/mingw-w64-headers/configure.ac
+++ b/mingw-w64-headers/configure.ac
@@ -37,7 +37,6 @@ AM_CONDITIONAL([HAVE_WIDL],[AS_VAR_TEST_SET([WIDL])])
# Checks for header files.
BASEHEAD_LIST="crt/_bsd_types.h crt/_cygwin.h crt/_mingw.h crt/_mingw_mac.h
crt/_mingw_secapi.h crt/_mingw_unicode.h crt/_timeval.h crt/crtdefs.h
crt/corecrt.h crt/excpt.h crt/intrin.h crt/vadefs.h crt/tchar.h
"$srcdir/include/*.h
-SECHEAD_LIST="$srcdir/crt/sec_api/stralign_s.h"
for i in c inl dlg h16 hxx rh ver; do
BASEHEAD_LIST="$BASEHEAD_LIST "$srcdir/include/*.$i
done
diff --git a/mingw-w64-headers/crt/sec_api/stralign_s.h
b/mingw-w64-headers/crt/sec_api/stralign_s.h
deleted file mode 100644
index 4d29dbae3..000000000
--- a/mingw-w64-headers/crt/sec_api/stralign_s.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef __STRALIGN_H_S_
-#define __STRALIGN_H_S_
-
-#include <stralign.h>
-
-_CRT_BEGIN_C_HEADER
-
-#if !defined(_X86_) && defined(_WSTRING_S_DEFINED)
-#if defined(__cplusplus) && defined(_WConst_Return)
- static __inline PUWSTR ua_wcscpy_s(PUWSTR Destination,size_t
DestinationSize,PCUWSTR Source) {
- if(WSTR_ALIGNED(Source) && WSTR_ALIGNED(Destination)) return
(wcscpy_s((PWSTR)Destination,DestinationSize,(PCWSTR)Source)==0 ? Destination :
NULL);
- return uaw_wcscpy((PCUWSTR)String,Character);
- }
-#endif
-#endif
-
-_CRT_END_C_HEADER
-
-#endif
diff --git a/mingw-w64-headers/include/stralign.h
b/mingw-w64-headers/include/stralign.h
index 3babd2c64..3e86b8ec2 100644
--- a/mingw-w64-headers/include/stralign.h
+++ b/mingw-w64-headers/include/stralign.h
@@ -198,9 +198,17 @@ extern "C" {
#define ua_tcscpy strcpy
#endif
+#if !defined(_X86_) && defined(_WSTRING_S_DEFINED)
+#if defined(__cplusplus) && defined(_WConst_Return)
+ static __inline PUWSTR ua_wcscpy_s(PUWSTR Destination,size_t
DestinationSize,PCUWSTR Source) {
+ if(WSTR_ALIGNED(Source) && WSTR_ALIGNED(Destination)) return
(wcscpy_s((PWSTR)Destination,DestinationSize,(PCWSTR)Source)==0 ? Destination :
NULL);
+ return uaw_wcscpy((PCUWSTR)String,Character);
+ }
+#endif
+#endif
+
#ifdef __cplusplus
}
#endif
-#include <sec_api/stralign_s.h>
#endif
--
2.55.0.windows.5
From 9ecb500f649bff6c8180d4d6daa8b137ba19749b Mon Sep 17 00:00:00 2001
From: Zhongteng Gui <[email protected]>
Date: Thu, 27 Aug 2026 16:01:18 +0800
Subject: [PATCH 2/3] headers: crt: split out wstdio_s.h
Deduplicate. Use the version from wchar_s.h instead of stdio_s.h,
becuase stdio_s.h contains several duplicated declarations that are
already in corecrt_wstdio.h, and not suffixed with _s.
Let corecrt_wstdio.h to include wstdio_s.h, following wconio's behavior.
stdio_s.h and wchar_s.h will also indirectly include wstdio_s.h through
stdio.h/wchar.h -> corecrt_wstdio.h -> wstdio_s.h.
Also dropped _WSTDIO_S_DEFINED.
Signed-off-by: Zhongteng Gui <[email protected]>
---
mingw-w64-headers/crt/corecrt_wstdio.h | 2 +
mingw-w64-headers/crt/sec_api/stdio_s.h | 309 -----------------------
mingw-w64-headers/crt/sec_api/wchar_s.h | 273 --------------------
mingw-w64-headers/crt/sec_api/wstdio_s.h | 285 +++++++++++++++++++++
4 files changed, 287 insertions(+), 582 deletions(-)
create mode 100644 mingw-w64-headers/crt/sec_api/wstdio_s.h
diff --git a/mingw-w64-headers/crt/corecrt_wstdio.h
b/mingw-w64-headers/crt/corecrt_wstdio.h
index 7f5e25ad8..50cd3d65f 100644
--- a/mingw-w64-headers/crt/corecrt_wstdio.h
+++ b/mingw-w64-headers/crt/corecrt_wstdio.h
@@ -715,4 +715,6 @@ void __cdecl __mingw_str_free(void * _Ptr);
_CRT_END_C_HEADER
+#include <sec_api/wstdio_s.h>
+
#endif /* _INC_CORECRT_WSTDIO */
diff --git a/mingw-w64-headers/crt/sec_api/stdio_s.h
b/mingw-w64-headers/crt/sec_api/stdio_s.h
index 6918a6529..41120160e 100644
--- a/mingw-w64-headers/crt/sec_api/stdio_s.h
+++ b/mingw-w64-headers/crt/sec_api/stdio_s.h
@@ -586,315 +586,6 @@ _CRT_BEGIN_C_HEADER
_CRTIMP errno_t __cdecl tmpnam_s(char*,rsize_t);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,tmpnam_s,char,_DstBuf)
-
-#ifndef _WSTDIO_S_DEFINED
-#define _WSTDIO_S_DEFINED
- _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(wchar_t*,_getws_s,wchar_t,_DstBuf)
-
-#ifdef _UCRT
- int __cdecl __stdio_common_vswprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list
_ArgList);
- int __cdecl __stdio_common_vsnwprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList);
- int __cdecl __stdio_common_vfwprintf_s(unsigned __int64 _Options, FILE
*_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
-
- __mingw_ovr int __cdecl _vfwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vfwscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _File, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vfwscanf_s(FILE* _File, const wchar_t *_Format,
va_list _ArgList)
- {
- return _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _vwscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
- {
- return _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vwscanf_s(const wchar_t *_Format, va_list _ArgList)
- {
- return _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _fwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _wscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl wscanf_s(const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vswscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, (size_t)-1, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vswscanf_s(const wchar_t *_Src, const wchar_t
*_Format, va_list _ArgList)
- {
- return _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _swscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl swscanf_s(const wchar_t *_Src, const wchar_t
*_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vsnwscanf_s_l(const wchar_t *_Src, size_t
_MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, _MaxCount, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _snwscanf_s(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vfwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vfwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_File, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _vwprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
- {
- return _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl vfwprintf_s(FILE *_File, const wchar_t *_Format,
va_list _ArgList)
- {
- return _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl vwprintf_s(const wchar_t *_Format, va_list _ArgList)
- {
- return _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl _fwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _wprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl fwprintf_s(FILE *_File, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl wprintf_s(const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, va_list _ArgList)
- {
- return _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vsnwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
- {
- return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
- }
- __mingw_ovr int __cdecl _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale,
_ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-#else /* _UCRT */
- int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
- int __cdecl wprintf_s(const wchar_t *_Format,...);
- int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
- int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
-
- int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,va_list _ArgList);
-
- int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
-
- _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
-
- _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
-
-
- _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...);
- _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t
*_Format,...);
- _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,...);
- _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl wscanf_s(const wchar_t *_Format, ...);
-#endif /* !_UCRT */
-
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const
wchar_t*, _Format, va_list, _ArgList)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format,va_list,_ArgList)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format)
-
- _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode);
- _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode,FILE *_OldFile);
-
- _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,_wtmpnam_s,wchar_t,_DstBuf)
-
-#ifndef _UCRT
- _CRTIMP int __cdecl _fwprintf_p(FILE *_File,const wchar_t *_Format,...);
- _CRTIMP int __cdecl _wprintf_p(const wchar_t *_Format,...);
- _CRTIMP int __cdecl _vfwprintf_p(FILE *_File,const wchar_t *_Format,va_list
_ArgList);
- _CRTIMP int __cdecl _vwprintf_p(const wchar_t *_Format,va_list _ArgList);
- _CRTIMP int __cdecl _swprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,...);
- _SECIMP int __cdecl _vswprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,va_list _ArgList);
- _CRTIMP int __cdecl _scwprintf_p(const wchar_t *_Format,...);
- _SECIMP int __cdecl _vscwprintf_p(const wchar_t *_Format,va_list _ArgList);
- _CRTIMP int __cdecl _wprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _wprintf_p_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _vwprintf_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _vwprintf_p_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _fwprintf_p_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vfwprintf_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _vfwprintf_p_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _swprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _swprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vswprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _vswprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _scwprintf_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _scwprintf_p_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _vscwprintf_p_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _snwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vsnwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl __swprintf_l(wchar_t *_Dest,const wchar_t
*_Format,_locale_t _Plocinfo,...);
- _CRTIMP int __cdecl __vswprintf_l(wchar_t *_Dest,const wchar_t
*_Format,_locale_t _Plocinfo,va_list _Args);
- _CRTIMP int __cdecl _vscwprintf_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwscanf_l(FILE *_File,const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _swscanf_l(const wchar_t *_Src,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _snwscanf_l(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _wscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
-#endif /* !_UCRT */
-
-#endif /* _WSTDIO_S_DEFINED */
#endif /* _STDIO_S_DEFINED */
#if __MSVCRT_VERSION__ >= 0x800
diff --git a/mingw-w64-headers/crt/sec_api/wchar_s.h
b/mingw-w64-headers/crt/sec_api/wchar_s.h
index 23fa2e026..8e55d7627 100644
--- a/mingw-w64-headers/crt/sec_api/wchar_s.h
+++ b/mingw-w64-headers/crt/sec_api/wchar_s.h
@@ -13,279 +13,6 @@ _CRT_BEGIN_C_HEADER
_SECIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int
_AccessMode);
_SECIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName,size_t
_SizeInWords);
-#ifndef _WSTDIO_S_DEFINED
-#define _WSTDIO_S_DEFINED
- _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(wchar_t*,_getws_s,wchar_t,_DstBuf)
-
-#ifdef _UCRT
- int __cdecl __stdio_common_vswprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list
_ArgList);
- int __cdecl __stdio_common_vsnwprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList);
- int __cdecl __stdio_common_vfwprintf_s(unsigned __int64 _Options, FILE
*_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
-
- __mingw_ovr int __cdecl _vfwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vfwscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _File, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vfwscanf_s(FILE* _File, const wchar_t *_Format,
va_list _ArgList)
- {
- return _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _vwscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
- {
- return _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vwscanf_s(const wchar_t *_Format, va_list _ArgList)
- {
- return _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _fwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _wscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl wscanf_s(const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vswscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, (size_t)-1, _Format, _Locale, _ArgList);
- }
-
- __mingw_ovr int __cdecl vswscanf_s(const wchar_t *_Src, const wchar_t
*_Format, va_list _ArgList)
- {
- return _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
- }
-
- __mingw_ovr int __cdecl _swscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl swscanf_s(const wchar_t *_Src, const wchar_t
*_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vsnwscanf_s_l(const wchar_t *_Src, size_t
_MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, _MaxCount, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _snwscanf_s(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vfwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vfwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_File, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _vwprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
- {
- return _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl vfwprintf_s(FILE *_File, const wchar_t *_Format,
va_list _ArgList)
- {
- return _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl vwprintf_s(const wchar_t *_Format, va_list _ArgList)
- {
- return _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl _fwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _wprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl fwprintf_s(FILE *_File, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl wprintf_s(const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vswprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, va_list _ArgList)
- {
- return _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
- }
- __mingw_ovr int __cdecl _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-
- __mingw_ovr int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
- {
- return __stdio_common_vsnwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
- }
- __mingw_ovr int __cdecl _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
- {
- return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
- }
- __mingw_ovr int __cdecl _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Locale);
- _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale,
_ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
- __mingw_ovr int __cdecl _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, ...)
- {
- __builtin_va_list _ArgList;
- int _Ret;
- __builtin_va_start(_ArgList, _Format);
- _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
- __builtin_va_end(_ArgList);
- return _Ret;
- }
-#else /* _UCRT */
- int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
- int __cdecl wprintf_s(const wchar_t *_Format,...);
- int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
- int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
-
- int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,va_list _ArgList);
-
- int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
-
- _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
-
- _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
-
-
- _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
- _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...);
- _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t
*_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t
*_Format,...);
- _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,...);
- _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
- _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
- _CRTIMP int __cdecl wscanf_s(const wchar_t *_Format, ...);
-#endif /* !_UCRT */
-
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const
wchar_t*, _Format, va_list, _ArgList)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format,va_list,_ArgList)
-
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format)
-
- _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode);
- _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode,FILE *_OldFile);
-
- _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
- __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,_wtmpnam_s,wchar_t,_DstBuf)
-#endif /* _WSTDIO_S_DEFINED */
-
#ifndef _WSTRING_S_DEFINED
#define _WSTRING_S_DEFINED
_CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t
*_Delim,wchar_t **_Context);
diff --git a/mingw-w64-headers/crt/sec_api/wstdio_s.h
b/mingw-w64-headers/crt/sec_api/wstdio_s.h
new file mode 100644
index 000000000..0848b3736
--- /dev/null
+++ b/mingw-w64-headers/crt/sec_api/wstdio_s.h
@@ -0,0 +1,285 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _INC_WSTDIO_S
+#define _INC_WSTDIO_S
+
+#include <corecrt_wstdio.h>
+
+_CRT_BEGIN_C_HEADER
+
+ _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
+ __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(wchar_t*,_getws_s,wchar_t,_DstBuf)
+
+#ifdef _UCRT
+ int __cdecl __stdio_common_vswprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list
_ArgList);
+ int __cdecl __stdio_common_vsnwprintf_s(unsigned __int64 _Options, wchar_t
*_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList);
+ int __cdecl __stdio_common_vfwprintf_s(unsigned __int64 _Options, FILE
*_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
+
+ __mingw_ovr int __cdecl _vfwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vfwscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _File, _Format, _Locale, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl vfwscanf_s(FILE* _File, const wchar_t *_Format,
va_list _ArgList)
+ {
+ return _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl _vwscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
+ {
+ return _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl vwscanf_s(const wchar_t *_Format, va_list _ArgList)
+ {
+ return _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl _fwscanf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _wscanf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl wscanf_s(const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _vswscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl vswscanf_s(const wchar_t *_Src, const wchar_t
*_Format, va_list _ArgList)
+ {
+ return _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
+ }
+
+ __mingw_ovr int __cdecl _swscanf_s_l(const wchar_t *_Src, const wchar_t
*_Format, _locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl swscanf_s(const wchar_t *_Src, const wchar_t
*_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _vsnwscanf_s_l(const wchar_t *_Src, size_t
_MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS |
_CRT_INTERNAL_SCANF_SECURECRT, _Src, _MaxCount, _Format, _Locale, _ArgList);
+ }
+ __mingw_ovr int __cdecl _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, _locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl _snwscanf_s(const wchar_t *_Src, size_t _MaxCount,
const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _vfwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vfwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_File, _Format, _Locale, _ArgList);
+ }
+ __mingw_ovr int __cdecl _vwprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, va_list _ArgList)
+ {
+ return _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
+ }
+ __mingw_ovr int __cdecl vfwprintf_s(FILE *_File, const wchar_t *_Format,
va_list _ArgList)
+ {
+ return _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
+ }
+ __mingw_ovr int __cdecl vwprintf_s(const wchar_t *_Format, va_list _ArgList)
+ {
+ return _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
+ }
+ __mingw_ovr int __cdecl _fwprintf_s_l(FILE *_File, const wchar_t *_Format,
_locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl _wprintf_s_l(const wchar_t *_Format, _locale_t
_Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl fwprintf_s(FILE *_File, const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl wprintf_s(const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vswprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _Format, _Locale, _ArgList);
+ }
+ __mingw_ovr int __cdecl vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, va_list _ArgList)
+ {
+ return _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
+ }
+ __mingw_ovr int __cdecl _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
const wchar_t *_Format, _locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const
wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+
+ __mingw_ovr int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
+ {
+ return __stdio_common_vsnwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
+ }
+ __mingw_ovr int __cdecl _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
+ {
+ return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
+ }
+ __mingw_ovr int __cdecl _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Locale);
+ _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale,
_ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+ __mingw_ovr int __cdecl _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize,
size_t _MaxCount, const wchar_t *_Format, ...)
+ {
+ __builtin_va_list _ArgList;
+ int _Ret;
+ __builtin_va_start(_ArgList, _Format);
+ _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL,
_ArgList);
+ __builtin_va_end(_ArgList);
+ return _Ret;
+ }
+#else /* _UCRT */
+ int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
+ int __cdecl wprintf_s(const wchar_t *_Format,...);
+ int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
+ int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
+
+ int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,va_list _ArgList);
+
+ int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
+
+ _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
+
+ _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
+
+
+ _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
+ _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
+ _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,va_list _ArgList);
+ _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const
wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+ _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t
_MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+ _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t
*_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...);
+ _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t
*_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t
*_Format,...);
+ _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,...);
+ _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const
wchar_t *_Format,_locale_t _Locale,...);
+ _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
+ _CRTIMP int __cdecl wscanf_s(const wchar_t *_Format, ...);
+#endif /* !_UCRT */
+
+ __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const
wchar_t*, _Format, va_list, _ArgList)
+
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
+
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format,va_list,_ArgList)
+
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const
wchar_t*,_Format)
+
+ _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode);
+ _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t
*_Filename,const wchar_t *_Mode,FILE *_OldFile);
+
+ _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
+ __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,_wtmpnam_s,wchar_t,_DstBuf)
+
+_CRT_END_C_HEADER
+
+#endif /* _INC_WSTDIO_S */
--
2.55.0.windows.5
From 33a1f86992c45282754706f47eeff88de64aa925 Mon Sep 17 00:00:00 2001
From: Zhongteng Gui <[email protected]>
Date: Thu, 27 Aug 2026 16:17:20 +0800
Subject: [PATCH 3/3] headers: wchar_s.h: Drop io and time symbols
They're already declared in corecrt_wio.h and corecrt_wtime.h
Signed-off-by: Zhongteng Gui <[email protected]>
---
mingw-w64-headers/crt/sec_api/wchar_s.h | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/mingw-w64-headers/crt/sec_api/wchar_s.h
b/mingw-w64-headers/crt/sec_api/wchar_s.h
index 8e55d7627..285145877 100644
--- a/mingw-w64-headers/crt/sec_api/wchar_s.h
+++ b/mingw-w64-headers/crt/sec_api/wchar_s.h
@@ -10,9 +10,6 @@
_CRT_BEGIN_C_HEADER
- _SECIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int
_AccessMode);
- _SECIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName,size_t
_SizeInWords);
-
#ifndef _WSTRING_S_DEFINED
#define _WSTRING_S_DEFINED
_CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t
*_Delim,wchar_t **_Context);
@@ -57,20 +54,6 @@ _CRT_BEGIN_C_HEADER
}
#endif
- _SECIMP errno_t __cdecl _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const
struct tm *_Tm);
- _SECIMP errno_t __cdecl _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const
__time32_t *_Time);
- _SECIMP errno_t __cdecl _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords);
- _SECIMP errno_t __cdecl _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords);
- _SECIMP errno_t __cdecl _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const
__time64_t *_Time);
-
-#if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
-#define _INC_WTIME_S_INL
- errno_t __cdecl _wctime_s(wchar_t *, size_t, const time_t *);
-#ifndef _USE_32BIT_TIME_T
-__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t
_SizeInWords,const time_t *_Time) { return
_wctime64_s(_Buffer,_SizeInWords,_Time); }
-#endif
-#endif
-
_CRTIMP errno_t __cdecl mbsrtowcs_s(size_t *_Retval,wchar_t *_Dst,size_t
_SizeInWords,const char **_PSrc,size_t _N,mbstate_t *_State);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,mbsrtowcs_s,size_t*,_Retval,wchar_t,_Dst,const
char**,_PSrc,size_t,_N,mbstate_t,_State)
--
2.55.0.windows.5
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public