diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 65506fbca5e..e21da6cbe5b 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -976,7 +976,7 @@ @ stub _swprintf_p_l @ stub _swprintf_s_l @ varargs _swscanf_l(wstr wstr ptr) msvcrt._swscanf_l -@ stub _swscanf_s_l +@ varargs _swscanf_s_l(wstr wstr ptr) msvcrt._swscanf_s_l @ extern _sys_errlist msvcrt._sys_errlist @ extern _sys_nerr msvcrt._sys_nerr @ cdecl _tell(long) msvcrt._tell @@ -1402,7 +1402,7 @@ @ cdecl strxfrm(ptr str long) msvcrt.strxfrm @ varargs swprintf_s(ptr long wstr) msvcrt.swprintf_s @ varargs swscanf(wstr wstr) msvcrt.swscanf -@ stub swscanf_s +@ varargs swscanf_s(wstr wstr) msvcrt.swscanf_s @ cdecl system(str) msvcrt.system @ cdecl tan(double) msvcrt.tan @ cdecl tanh(double) msvcrt.tanh diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 0e6c62ee548..ad8537866e3 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -963,7 +963,7 @@ @ stub _swprintf_p_l @ stub _swprintf_s_l @ varargs _swscanf_l(wstr wstr ptr) msvcrt._swscanf_l -@ stub _swscanf_s_l +@ varargs _swscanf_s_l(wstr wstr ptr) msvcrt._swscanf_s_l @ extern _sys_errlist msvcrt._sys_errlist @ extern _sys_nerr msvcrt._sys_nerr @ cdecl _tell(long) msvcrt._tell @@ -1386,7 +1386,7 @@ @ cdecl strxfrm(ptr str long) msvcrt.strxfrm @ varargs swprintf_s(ptr long wstr) msvcrt.swprintf_s @ varargs swscanf(wstr wstr) msvcrt.swscanf -@ stub swscanf_s +@ varargs swscanf_s(wstr wstr) msvcrt.swscanf_s @ cdecl system(str) msvcrt.system @ cdecl tan(double) msvcrt.tan @ cdecl tanh(double) msvcrt.tanh diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index a5705ac9c81..9b6689857de 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -911,7 +911,7 @@ # stub _swprintf_p_l # stub _swprintf_s_l @ varargs _swscanf_l(wstr wstr ptr) MSVCRT__swscanf_l -# stub _swscanf_s_l +@ varargs _swscanf_s_l(wstr wstr ptr) MSVCRT__swscanf_s_l @ extern _sys_errlist MSVCRT__sys_errlist @ extern _sys_nerr MSVCRT__sys_nerr @ cdecl _tell(long) MSVCRT__tell @@ -1338,7 +1338,7 @@ @ varargs swprintf(ptr wstr) MSVCRT_swprintf @ varargs swprintf_s(ptr long wstr) MSVCRT_swprintf_s @ varargs swscanf(wstr wstr) MSVCRT_swscanf -# stub swscanf_s +@ varargs swscanf_s(wstr wstr) MSVCRT_swscanf_s @ cdecl system(str) MSVCRT_system @ cdecl tan(double) MSVCRT_tan @ cdecl tanh(double) MSVCRT_tanh diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index c9d5c56f954..cfb4aa0e89d 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -98,6 +98,10 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { #undef SECURE #include "scanf.h" +/* vswscanf_s_l */ +#define SECURE 1 +#include "scanf.h" + /* vcscanf_l */ #undef WIDE_SCANF #define CONSOLE 1 @@ -423,6 +427,35 @@ int CDECL MSVCRT__swscanf_l(const MSVCRT_wchar_t *str, const MSVCRT_wchar_t *for return res; } +/********************************************************************* + * swscanf_s (MSVCRT.@) + */ +int CDECL MSVCRT_swscanf_s(const MSVCRT_wchar_t *str, const MSVCRT_wchar_t *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vswscanf_s_l(str, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _swscanf_s_l (MSVCRT.@) + */ +int CDECL MSVCRT__swscanf_s_l(const MSVCRT_wchar_t *str, const MSVCRT_wchar_t *format, + MSVCRT__locale_t locale, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, locale); + res = MSVCRT_vswscanf_s_l(str, format, locale, valist); + __ms_va_end(valist); + return res; +} + /********************************************************************* * _cscanf (MSVCRT.@) */