Hi Martin,
Thanks for your WIP stdio_s.h . That helped a lot.
I had to add another func (swprintf_s) & I had to comment out 3 of your wip
functions, because there is no "__stdio_common_vfscanf_s" internal
func in MS ucrtbase.
I have attached my modified stdio_s.h & wchar_s.h file if you want to have a
look if I did that right.
Changes are framed - a bit unorthodox - by /* NEW SK */ ...
However, I am getting a new error now, when compiling Julia sources with the
ucrtbase version of gcc - see below ERROR #4.
I think you mentioned somewhere that you excluded "tzset" from the "ucrtbase
autoexport" patch, because this led to an
"infinite recursion" or similar.
But by looking at the below error, it seems that it is still needed to be
excluded somehow.
Do you have any ideas for an additional/different patch to address this ?
(Preferably not requiring to explicitly exclude linkage via -Wl linker
flags, as all this is happing somewhere deep inside the big Makefile & CMake
build system for Julia ?
Thanks & Cheers
- Sven
ERROR #4:
--------------
/CROSS64/lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/lib
/../lib/libmsvcrt.a(lib64_libucrtbase_a-ucrtbase_compat.o): In function
`tzset':
/home/sven/buildtmp/build/mingw-crt/../../src/mingw-w64/mingw-w64-crt/crt/uc
rtbase_compat.c:178: multiple definition of `tzset'
/CROSS64/lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/lib
/../lib/libmsvcrt.a(dumns02036.o):(.text+0x0): first defined here
/CROSS64/lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/lib
/../lib/libmsvcrt.a(lib64_libucrtbase_a-ucrtbase_compat.o):/home/sven/buildt
mp/build/mingw-crt/../../src/mingw-w64/mingw-w64-crt/crt/ucrtbase_compat.c:2
36: multiple definition of `__imp_tzset'
/CROSS64/lib/gcc/x86_64-w64-mingw32/6.4.0/../../../../x86_64-w64-mingw32/lib
/../lib/libmsvcrt.a(dumns02036.o):(.idata$5+0x0): first defined here
collect2: error: ld returned 1 exit status
-----Original Message-----
From: Martin Storsjö [mailto:[email protected]]
Sent: 24 November 2017 13:02
To: [email protected]
Subject: Re: [Mingw-w64-public] [PATCH] ucrtbase: Make sure that compat
symbols aren't autoexported
On Thu, 23 Nov 2017, Sven Kretzschmar wrote:
> I will try to add the 2 missing references in the way you hinted at in
> your post.
FWIW, for the _cprintf one, the conio.h patch that I sent should be a proper
fix.
The other one requires fixing stdio_s.h, and it's a truly huge number of
functions there. I started looking at it, but don't have time to do them all
right now. Attached is my work in progress for this header, that should
cover at least the function that you mentioned so far.
That one isn't sent for review yet as it's quite incomplete. OTOH, perhaps
it's better to at least fix up some subsets of it, that happens to be used,
instead of aiming for all of them.
// Martin
/**
* 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_WCHAR_S
#define _INC_WCHAR_S
#include <wchar.h>
#if defined(MINGW_HAS_SECURE_API)
#if defined(__LIBMSVCRT__)
/* When building mingw-w64, this should be blank. */
#define _SECIMP
#else
#ifndef _SECIMP
#define _SECIMP __declspec(dllimport)
#endif /* _SECIMP */
#endif /* defined(_CRTBLD) || defined(__LIBMSVCRT__) */
#ifdef __cplusplus
extern "C" {
#endif
/* NEW SK */
#if __MSVCRT_VERSION__ >= 0x1400
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);
#endif
/* NEW SK */
#ifndef _WIO_S_DEFINED
#define _WIO_S_DEFINED
_SECIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int _AccessMode);
_SECIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName,size_t
_SizeInWords);
#endif
#ifndef _WCONIO_S_DEFINED
#define _WCONIO_S_DEFINED
_SECIMP errno_t __cdecl _cgetws_s (wchar_t *_Buffer,size_t
_SizeInWords,size_t *_SizeRead);
_SECIMP int __cdecl _cwprintf_s (const wchar_t *_Format,...);
_CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
_CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t
_Locale,...);
_SECIMP int __cdecl _vcwprintf_s (const wchar_t *_Format,va_list _ArgList);
_SECIMP int __cdecl _cwprintf_s_l (const wchar_t *_Format,_locale_t
_Locale,...);
_SECIMP int __cdecl _vcwprintf_s_l (const wchar_t *_Format,_locale_t
_Locale,va_list _ArgList);
#endif
#ifndef _WSTDIO_S_DEFINED
#define _WSTDIO_S_DEFINED
_CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
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);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const
wchar_t*, _Format, va_list, _ArgList)
// int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
//
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
/* NEW SK */
#if __MSVCRT_VERSION__ >= 0x1400
__mingw_ovr int __cdecl swprintf_s (wchar_t * __restrict__ s, size_t n, const
wchar_t * __restrict__ format, ...)
{
__builtin_va_list ap;
int ret;
__builtin_va_start(ap, format);
ret = __stdio_common_vswprintf_s(UCRTBASE_PRINTF_DEFAULT_WIDE |
UCRTBASE_PRINTF_STANDARD_SNPRINTF_BEHAVIOUR, s, n, format, NULL, ap);
__builtin_va_end(ap);
return ret;
}
#else
int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
#endif
/* NEW SK */
_CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,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,...);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,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 _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 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);
#endif
#ifndef _WSTDLIB_S_DEFINED
#define _WSTDLIB_S_DEFINED
_CRTIMP errno_t __cdecl _itow_s (int _Val,wchar_t *_DstBuf,size_t
_SizeInWords,int _Radix);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(errno_t,_itow_s,int,_Val,wchar_t,_DstBuf,int,_Radix)
_CRTIMP errno_t __cdecl _ltow_s (long _Val,wchar_t *_DstBuf,size_t
_SizeInWords,int _Radix);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(errno_t,_ltow_s,long,_Val,wchar_t,_DstBuf,int,_Radix)
_CRTIMP errno_t __cdecl _ultow_s (unsigned long _Val,wchar_t *_DstBuf,size_t
_SizeInWords,int _Radix);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(errno_t,_ultow_s,unsigned
long,_Val,wchar_t,_DstBuf,int,_Radix)
_CRTIMP errno_t __cdecl _wgetenv_s(size_t *_ReturnSize,wchar_t
*_DstBuf,size_t _DstSizeInWords,const wchar_t *_VarName);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(errno_t,_wgetenv_s,size_t*,_ReturnSize,wchar_t,_DstBuf,const
wchar_t*,_VarName)
_CRTIMP errno_t __cdecl _wdupenv_s(wchar_t **_Buffer,size_t
*_BufferSizeInWords,const wchar_t *_VarName);
_CRTIMP errno_t __cdecl _i64tow_s(__int64 _Val,wchar_t *_DstBuf,size_t
_SizeInWords,int _Radix);
_CRTIMP errno_t __cdecl _ui64tow_s(unsigned __int64 _Val,wchar_t
*_DstBuf,size_t _SizeInWords,int _Radix);
#endif
#ifndef _POSIX_
#ifndef _WSTDLIBP_S_DEFINED
#define _WSTDLIBP_S_DEFINED
_CRTIMP errno_t __cdecl _wmakepath_s(wchar_t *_PathResult,size_t
_SizeInWords,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t
*_Filename,const wchar_t *_Ext);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(errno_t,_wmakepath_s,wchar_t,_PathResult,const
wchar_t*,_Drive,const wchar_t*,_Dir,const wchar_t*,_Filename,const
wchar_t*,_Ext)
_CRTIMP errno_t __cdecl _wputenv_s(const wchar_t *_Name,const wchar_t
*_Value);
_CRTIMP errno_t __cdecl _wsearchenv_s(const wchar_t *_Filename,const wchar_t
*_EnvVar,wchar_t *_ResultPath,size_t _SizeInWords);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(errno_t,_wsearchenv_s,const
wchar_t*,_Filename,const wchar_t*,_EnvVar,wchar_t,_ResultPath)
_CRTIMP errno_t __cdecl _wsplitpath_s(const wchar_t *_FullPath,wchar_t
*_Drive,size_t _DriveSizeInWords,wchar_t *_Dir,size_t _DirSizeInWords,wchar_t
*_Filename,size_t _FilenameSizeInWords,wchar_t *_Ext,size_t _ExtSizeInWords);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(errno_t,_wsplitpath_s,wchar_t,_Dest)
#endif
#endif
#ifndef _WSTRING_S_DEFINED
#define _WSTRING_S_DEFINED
_CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t
**_Context);
_CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int
_ErrNum);
_CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t
_SizeInWords,const wchar_t *_ErrMsg);
_CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t
_DstSizeInWords,wchar_t _Val,size_t _MaxCount);
_CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t
_Val);
_CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
_CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t
_SizeInWords,_locale_t _Locale);
_CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
_CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t
_Locale);
_CRTIMP errno_t __cdecl wcscat_s(wchar_t *_Dst, rsize_t _DstSize, const
wchar_t *_Src);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscat_s, wchar_t, _Dest,
const wchar_t *, _Source)
_CRTIMP errno_t __cdecl wcscpy_s(wchar_t *_Dst, rsize_t _DstSize, const
wchar_t *_Src);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscpy_s, wchar_t, _Dest,
const wchar_t *, _Source)
_CRTIMP errno_t __cdecl wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const
wchar_t *_Src,size_t _MaxCount);
_CRTIMP errno_t __cdecl _wcsncat_s_l(wchar_t *_Dst,size_t
_DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
_CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dst,size_t _DstSizeInChars,const
wchar_t *_Src,size_t _MaxCount);
_CRTIMP errno_t __cdecl _wcsncpy_s_l(wchar_t *_Dst,size_t
_DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
_CRTIMP wchar_t *__cdecl _wcstok_s_l(wchar_t *_Str,const wchar_t
*_Delim,wchar_t **_Context,_locale_t _Locale);
_CRTIMP errno_t __cdecl _wcsset_s_l(wchar_t *_Str,size_t
_SizeInChars,unsigned int _Val,_locale_t _Locale);
_CRTIMP errno_t __cdecl _wcsnset_s_l(wchar_t *_Str,size_t
_SizeInChars,unsigned int _Val, size_t _Count,_locale_t _Locale);
__forceinline size_t __cdecl wcsnlen_s(const wchar_t * _src, size_t _count) {
return _src ? wcsnlen(_src, _count) : 0;
}
#endif
#ifndef _WTIME_S_DEFINED
#define _WTIME_S_DEFINED
_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
#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)
_CRTIMP errno_t __cdecl wcrtomb_s(size_t *_Retval,char *_Dst,size_t
_SizeInBytes,wchar_t _Ch,mbstate_t *_State);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(errno_t,wcrtomb_s,size_t*,_Retval,char,_Dst,wchar_t,_Ch,mbstate_t,_State)
_CRTIMP errno_t __cdecl wcsrtombs_s(size_t *_Retval,char *_Dst,size_t
_SizeInBytes,const wchar_t **_Src,size_t _Size,mbstate_t *_State);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,wcsrtombs_s,size_t,_Retval,char,_Dst,const
wchar_t**,_Src,size_t,_Size,mbstate_t,_State)
_SECIMP errno_t __cdecl wmemcpy_s (wchar_t *_dest,size_t
_numberOfElements,const wchar_t *_src,size_t _count);
_SECIMP errno_t __cdecl wmemmove_s(wchar_t *_dest,size_t
_numberOfElements,const wchar_t *_src,size_t _count);
#ifdef __cplusplus
}
#endif
#endif
#endif
/**
* 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_STDIO_S
#define _INC_STDIO_S
#include <stdio.h>
#if defined(MINGW_HAS_SECURE_API)
#if defined(__LIBMSVCRT__)
/* When building mingw-w64, this should be blank. */
#define _SECIMP
#else
#ifndef _SECIMP
#define _SECIMP __declspec(dllimport)
#endif /* _SECIMP */
#endif /* defined(_CRTBLD) || defined(__LIBMSVCRT__) */
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _STDIO_S_DEFINED
#define _STDIO_S_DEFINED
_CRTIMP errno_t __cdecl clearerr_s(FILE *_File);
size_t __cdecl fread_s(void *_DstBuf,size_t _DstSize,size_t
_ElementSize,size_t _Count,FILE *_File);
#if __MSVCRT_VERSION__ >= 0x1400
int __cdecl __stdio_common_vsprintf_s(unsigned __int64 _Options, char *_Str,
size_t _Len, const char *_Format, _locale_t _Locale, va_list _ArgList);
int __cdecl __stdio_common_vsnprintf_s(unsigned __int64 _Options, char *_Str,
size_t _Len, size_t _MaxCount, const char *_Format, _locale_t _Locale, va_list
_ArgList);
int __cdecl __stdio_common_vsprintf_p(unsigned __int64 _Options, char *_Str,
size_t _Len, const char *_Format, _locale_t _Locale, va_list _ArgList);
int __cdecl __stdio_common_vfprintf_s(unsigned __int64 _Options, FILE *_File,
const char *_Format, _locale_t _Locale, va_list _ArgList);
int __cdecl __stdio_common_vfprintf_p(unsigned __int64 _Options, FILE *_File,
const char *_Format, _locale_t _Locale, va_list _ArgList);
/* NEW SK */
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);
/* NEW SK */
__mingw_ovr int __cdecl fprintf_s(FILE *_File,const char *_Format,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Format);
_Ret = __stdio_common_vfprintf_s(0, _File, _Format, NULL, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
_CRTIMP int __cdecl _fscanf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
/* SK: There is no __stdio_common_vfscanf(_s) function in ucrtbase
internals...
__mingw_ovr int __cdecl _fscanf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vfscanf_s(0, _File, _Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
*/
__mingw_ovr int __cdecl printf_s(const char *_Format,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Format);
_Ret = __stdio_common_vfprintf_s(0, stdout, _Format, NULL, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
_CRTIMP int __cdecl _scanf_l(const char *_Format,_locale_t _Locale,...);
/* SK: There is no __stdio_common_vfscanf(_s) function in ucrtbase
internals...
__mingw_ovr int __cdecl _scanf_l(const char *_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vfscanf(0, stdin, _Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
*/
_CRTIMP int __cdecl _scanf_s_l(const char *_Format,_locale_t _Locale,...);
/* SK: There is no __stdio_common_vfscanf(_s) function in ucrtbase
internals...
__mingw_ovr int __cdecl _scanf_s_l(const char *_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vfscanf_s(0, stdin, _Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
*/
// TODO: Not mapped for ucrtbase yet
_CRTIMP int __cdecl _snprintf_c(char *_DstBuf,size_t _MaxCount,const char
*_Format,...);
_CRTIMP int __cdecl _vsnprintf_c(char *_DstBuf,size_t _MaxCount,const char
*_Format,va_list _ArgList);
__mingw_ovr int __cdecl _fscanf_l(FILE *_File,const char *_Format,_locale_t
_Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vfscanf(0, _File, _Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl _sscanf_l(const char *_Src,const char
*_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vsscanf(0, _Src, (size_t)-1, _Format, _Locale,
_ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl _sscanf_s_l(const char *_Src,const char
*_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vsscanf(UCRTBASE_SCANF_SECURECRT, _Src, (size_t)-1,
_Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl sscanf_s(const char *_Src,const char *_Format,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Format);
_Ret = __stdio_common_vsscanf(UCRTBASE_SCANF_SECURECRT, _Src, (size_t)-1,
_Format, NULL, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl _snscanf_s(const char *_Src,size_t _MaxCount,const
char *_Format,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Format);
_Ret = __stdio_common_vsscanf(UCRTBASE_SCANF_SECURECRT, _Src, _MaxCount,
_Format, NULL, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl _snscanf_l(const char *_Src,size_t _MaxCount,const
char *_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vsscanf(0, _Src, _MaxCount, _Format, _Locale,
_ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl _snscanf_s_l(const char *_Src,size_t _MaxCount,const
char *_Format,_locale_t _Locale,...)
{
__builtin_va_list _ArgList;
int _Ret;
__builtin_va_start(_ArgList, _Locale);
_Ret = __stdio_common_vsscanf(UCRTBASE_SCANF_SECURECRT, _Src, _MaxCount,
_Format, _Locale, _ArgList);
__builtin_va_end(_ArgList);
return _Ret;
}
__mingw_ovr int __cdecl vfprintf_s(FILE *_File,const char *_Format,va_list
_ArgList)
{
return __stdio_common_vfprintf_s(0, _File, _Format, NULL, _ArgList);
}
__mingw_ovr int __cdecl vprintf_s(const char *_Format,va_list _ArgList)
{
return __stdio_common_vfprintf_s(0, stdout, _Format, NULL, _ArgList);
}
__mingw_ovr int __cdecl vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,va_list _ArgList)
{
return __stdio_common_vsnprintf_s(0, _DstBuf, _DstSize, _MaxCount, _Format,
NULL, _ArgList);
}
__mingw_ovr int __cdecl _vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,va_list _ArgList)
{
return __stdio_common_vsnprintf_s(0, _DstBuf, _DstSize, _MaxCount, _Format,
NULL, _ArgList);
}
__mingw_ovr int __cdecl vsprintf_s(char *_DstBuf,size_t _Size,const char
*_Format,va_list _ArgList)
{
return __stdio_common_vsprintf_s(0, _DstBuf, _Size, _Format, NULL,
_ArgList);
}
// TODO: Continue from here
_SECIMP int __cdecl sprintf_s(char *_DstBuf,size_t _DstSize,const char
*_Format,...);
_CRTIMP int __cdecl _snprintf_s(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,...);
_CRTIMP int __cdecl _fprintf_p(FILE *_File,const char *_Format,...);
_CRTIMP int __cdecl _printf_p(const char *_Format,...);
_CRTIMP int __cdecl _sprintf_p(char *_Dst,size_t _MaxCount,const char
*_Format,...);
_CRTIMP int __cdecl _vfprintf_p(FILE *_File,const char *_Format,va_list
_ArgList);
_CRTIMP int __cdecl _vprintf_p(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _vsprintf_p(char *_Dst,size_t _MaxCount,const char
*_Format,va_list _ArgList);
_CRTIMP int __cdecl _scprintf_p(const char *_Format,...);
_SECIMP int __cdecl _vscprintf_p(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _printf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _printf_p_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vprintf_l(const char *_Format,_locale_t _Locale,va_list
_ArgList);
_CRTIMP int __cdecl _vprintf_p_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _fprintf_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _fprintf_p_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _vfprintf_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _vfprintf_p_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _sprintf_l(char *_DstBuf,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _sprintf_p_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsprintf_l(char *_DstBuf,const char
*_Format,_locale_t,va_list _ArgList);
_CRTIMP int __cdecl _vsprintf_p_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _scprintf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _scprintf_p_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vscprintf_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _vscprintf_p_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _printf_s_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vprintf_s_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _fprintf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _vfprintf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _sprintf_s_l(char *_DstBuf,size_t _DstSize,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsprintf_s_l(char *_DstBuf,size_t _DstSize,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _snprintf_s_l(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsnprintf_s_l(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _snprintf_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _snprintf_c_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsnprintf_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _vsnprintf_c_l(char *_DstBuf,size_t _MaxCount,const char
*,_locale_t _Locale,va_list _ArgList);
#else
int __cdecl fprintf_s(FILE *_File,const char *_Format,...);
_CRTIMP int __cdecl _fscanf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
int __cdecl printf_s(const char *_Format,...);
_CRTIMP int __cdecl _scanf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _scanf_s_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _snprintf_c(char *_DstBuf,size_t _MaxCount,const char
*_Format,...);
_CRTIMP int __cdecl _vsnprintf_c(char *_DstBuf,size_t _MaxCount,const char
*_Format,va_list _ArgList);
_CRTIMP int __cdecl _fscanf_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _sscanf_l(const char *_Src,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _sscanf_s_l(const char *_Src,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl sscanf_s(const char *_Src,const char *_Format,...);
_CRTIMP int __cdecl _snscanf_s(const char *_Src,size_t _MaxCount,const char
*_Format,...);
_CRTIMP int __cdecl _snscanf_l(const char *_Src,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _snscanf_s_l(const char *_Src,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
int __cdecl vfprintf_s(FILE *_File,const char *_Format,va_list _ArgList);
int __cdecl vprintf_s(const char *_Format,va_list _ArgList);
int __cdecl vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const
char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,va_list _ArgList);
_SECIMP int __cdecl vsprintf_s(char *_DstBuf,size_t _Size,const char
*_Format,va_list _ArgList);
_SECIMP int __cdecl sprintf_s(char *_DstBuf,size_t _DstSize,const char
*_Format,...);
_CRTIMP int __cdecl _snprintf_s(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,...);
_CRTIMP int __cdecl _fprintf_p(FILE *_File,const char *_Format,...);
_CRTIMP int __cdecl _printf_p(const char *_Format,...);
_CRTIMP int __cdecl _sprintf_p(char *_Dst,size_t _MaxCount,const char
*_Format,...);
_CRTIMP int __cdecl _vfprintf_p(FILE *_File,const char *_Format,va_list
_ArgList);
_CRTIMP int __cdecl _vprintf_p(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _vsprintf_p(char *_Dst,size_t _MaxCount,const char
*_Format,va_list _ArgList);
_CRTIMP int __cdecl _scprintf_p(const char *_Format,...);
_SECIMP int __cdecl _vscprintf_p(const char *_Format,va_list _ArgList);
_CRTIMP int __cdecl _printf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _printf_p_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vprintf_l(const char *_Format,_locale_t _Locale,va_list
_ArgList);
_CRTIMP int __cdecl _vprintf_p_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _fprintf_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _fprintf_p_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _vfprintf_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _vfprintf_p_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _sprintf_l(char *_DstBuf,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _sprintf_p_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsprintf_l(char *_DstBuf,const char
*_Format,_locale_t,va_list _ArgList);
_CRTIMP int __cdecl _vsprintf_p_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _scprintf_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _scprintf_p_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vscprintf_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _vscprintf_p_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _printf_s_l(const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vprintf_s_l(const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _fprintf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,...);
_CRTIMP int __cdecl _vfprintf_s_l(FILE *_File,const char *_Format,_locale_t
_Locale,va_list _ArgList);
_CRTIMP int __cdecl _sprintf_s_l(char *_DstBuf,size_t _DstSize,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsprintf_s_l(char *_DstBuf,size_t _DstSize,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _snprintf_s_l(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsnprintf_s_l(char *_DstBuf,size_t _DstSize,size_t
_MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _snprintf_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _snprintf_c_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,...);
_CRTIMP int __cdecl _vsnprintf_l(char *_DstBuf,size_t _MaxCount,const char
*_Format,_locale_t _Locale,va_list _ArgList);
_CRTIMP int __cdecl _vsnprintf_c_l(char *_DstBuf,size_t _MaxCount,const char
*,_locale_t _Locale,va_list _ArgList);
#endif
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,vsnprintf_s,char,_DstBuf,size_t,_MaxCount,const
char*,_Format,va_list,_ArgList)
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnprintf_s,char,_DstBuf,size_t,_MaxCount,const
char*,_Format,va_list,_ArgList)
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vsprintf_s, char, _DstBuf, const
char*, _Format, va_list, _ArgList)
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,sprintf_s,vsprintf_s,char,_DstBuf,const
char*,_Format)
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snprintf_s,_vsnprintf_s,char,_DstBuf,size_t,_MaxCount,const
char*,_Format)
_CRTIMP errno_t __cdecl fopen_s(FILE **_File,const char *_Filename,const char
*_Mode);
_CRTIMP errno_t __cdecl freopen_s(FILE** _File, const char *_Filename, const
char *_Mode, FILE *_Stream);
_CRTIMP char* __cdecl gets_s(char*,rsize_t);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(char*,get_s,char,_DstBuf)
_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)
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);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const
wchar_t*, _Format, va_list, _ArgList)
/* NEW SK */
#if __MSVCRT_VERSION__ >= 0x1400
__mingw_ovr int __cdecl swprintf_s (wchar_t * __restrict__ s, size_t n, const
wchar_t * __restrict__ format, ...)
{
__builtin_va_list ap;
int ret;
__builtin_va_start(ap, format);
ret = __stdio_common_vswprintf_s(UCRTBASE_PRINTF_DEFAULT_WIDE |
UCRTBASE_PRINTF_STANDARD_SNPRINTF_BEHAVIOUR, s, n, format, NULL, ap);
__builtin_va_end(ap);
return ret;
}
#else
int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t
*_Format,...);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const
wchar_t*,_Format)
#endif
/* NEW SK */
_CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t
_DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,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,...);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,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 _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 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)
_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
#endif
_CRTIMP size_t __cdecl _fread_nolock_s(void *_DstBuf,size_t _DstSize,size_t
_ElementSize,size_t _Count,FILE *_File);
#ifdef __cplusplus
}
#endif
#endif
#endif
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public