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

Reply via email to