diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 756a56ae82..a6bb276213 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1179,7 +1179,7 @@ @ cdecl _write(long ptr long) msvcrt._write @ cdecl _wrmdir(wstr) msvcrt._wrmdir @ varargs _wscanf_l(wstr ptr) msvcrt._wscanf_l -@ stub _wscanf_s_l +@ varargs _wscanf_s_l(wstr ptr) msvcrt._wscanf_s_l @ cdecl _wsearchenv(wstr wstr ptr) msvcrt._wsearchenv @ stub _wsearchenv_s @ cdecl _wsetlocale(long wstr) msvcrt._wsetlocale @@ -1465,4 +1465,4 @@ @ varargs wprintf(wstr) msvcrt.wprintf @ stub wprintf_s @ varargs wscanf(wstr) msvcrt.wscanf -@ stub wscanf_s +@ varargs wscanf_s(wstr) msvcrt.wscanf_s diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index ecdcd6d9e3..311d64602e 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1163,7 +1163,7 @@ @ cdecl _write(long ptr long) msvcrt._write @ cdecl _wrmdir(wstr) msvcrt._wrmdir @ varargs _wscanf_l(wstr ptr) msvcrt._wscanf_l -@ stub _wscanf_s_l +@ varargs _wscanf_s_l(wstr ptr) msvcrt._wscanf_s_l @ cdecl _wsearchenv(wstr wstr ptr) msvcrt._wsearchenv @ stub _wsearchenv_s @ cdecl _wsetlocale(long wstr) msvcrt._wsetlocale @@ -1449,4 +1449,4 @@ @ varargs wprintf(wstr) msvcrt.wprintf @ stub wprintf_s @ varargs wscanf(wstr) msvcrt.wscanf -@ stub wscanf_s +@ varargs wscanf_s(wstr) msvcrt.wscanf_s diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index d5e10cf57f..a5f47a949b 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1108,7 +1108,7 @@ @ cdecl _write(long ptr long) MSVCRT__write @ cdecl _wrmdir(wstr) @ varargs _wscanf_l(wstr ptr) MSVCRT__wscanf_l -# stub _wscanf_s_l +@ varargs _wscanf_s_l(wstr ptr) MSVCRT__wscanf_s_l @ cdecl _wsearchenv(wstr wstr ptr) # stub _wsearchenv_s @ cdecl _wsetlocale(long wstr) MSVCRT__wsetlocale @@ -1405,7 +1405,7 @@ @ varargs wprintf(wstr) MSVCRT_wprintf # stub wprintf_s @ varargs wscanf(wstr) MSVCRT_wscanf -# stub wscanf_s +@ varargs wscanf_s(wstr) MSVCRT_wscanf_s # Functions not exported in native dll: @ cdecl _get_invalid_parameter_handler() diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index 498651e255..a47a3e47fc 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -303,6 +303,35 @@ int CDECL MSVCRT__wscanf_l(const MSVCRT_wchar_t *format, return res; } +/********************************************************************* + * wscanf_s (MSVCRT.@) + */ +int CDECL MSVCRT_wscanf_s(const MSVCRT_wchar_t *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vfwscanf_s_l(MSVCRT_stdin, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _wscanf_s_l (MSVCRT.@) + */ +int CDECL MSVCRT__wscanf_s_l(const MSVCRT_wchar_t *format, + MSVCRT__locale_t locale, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, locale); + res = MSVCRT_vfwscanf_s_l(MSVCRT_stdin, format, locale, valist); + __ms_va_end(valist); + return res; +} + /********************************************************************* * sscanf (MSVCRT.@) */