1 #include <windows.h>
2 #include <malloc.h>
3 #include <errno.h>
4 #include <msvcrt.h>
5 #include <stdio.h>
6 #include <sec_api/stdio_s.h>
7
8 static int __cdecl _int_vsprintf_s (char *, size_t, const char *, va_list);
9 static int __cdecl _stub (char *, size_t, const char *, va_list);
10
11 int __cdecl (*__MINGW_IMP_SYMBOL(vsprintf_s))(char *, size_t, const char *, va_list) =
12 _stub;
13
14 static int __cdecl
_stub(char * _DstBuf,size_t _Size,const char * _Format,va_list _ArgList)15 _stub (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
16 {
17 int __cdecl (*f)(char *, size_t, const char *, va_list) = __MINGW_IMP_SYMBOL(vsprintf_s);
18
19 if (f == _stub)
20 {
21 f = (int __cdecl (*)(char *, size_t, const char *, va_list))
22 GetProcAddress (__mingw_get_msvcrt_handle (), "vsprintf_s");
23 if (!f)
24 f = _int_vsprintf_s;
25 __MINGW_IMP_SYMBOL(vsprintf_s) = f;
26 }
27 return (*f)(_DstBuf, _Size, _Format, _ArgList);
28 }
29
30 int __cdecl
vsprintf_s(char * _DstBuf,size_t _Size,const char * _Format,va_list _ArgList)31 vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
32 {
33 return _stub (_DstBuf, _Size, _Format, _ArgList);
34 }
35
36 static int __cdecl
_int_vsprintf_s(char * _DstBuf,size_t _Size,const char * _Format,va_list _ArgList)37 _int_vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
38 {
39 return __ms_vsnprintf (_DstBuf, _Size, _Format, _ArgList);
40 }
41