Module: wine Branch: master Commit: 98e34c7f82b67f775d39a345dce4cde869851e0b URL: http://source.winehq.org/git/wine.git/?a=commit;h=98e34c7f82b67f775d39a345dc...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Apr 22 13:52:33 2010 +0200
msvcrt: Added _wscanf_s(_l) implementation.
---
dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/msvcrt.spec | 4 ++-- dlls/msvcrt/scanf.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 756a56a..a6bb276 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 ecdcd6d..311d646 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 d5e10cf..a5f47a9 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 498651e..a47a3e4 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -304,6 +304,35 @@ int CDECL MSVCRT__wscanf_l(const MSVCRT_wchar_t *format, }
/********************************************************************* + * 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.@) */ int CDECL MSVCRT_sscanf(const char *str, const char *format, ...)