Module: wine Branch: master Commit: 8386e95afca747eb8349088b1a576dc069ca2785 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8386e95afca747eb8349088b1a...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Apr 22 13:52:55 2010 +0200
msvcrt: Added _sscanf_s(_l) implementation.
---
dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/msvcrt.spec | 4 ++-- dlls/msvcrt/scanf.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index a6bb276..65506fb 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -922,7 +922,7 @@ @ stub _sprintf_p_l @ stub _sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l -@ stub _sscanf_s_l +@ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l @ stub _stat32 @ stub _stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 @@ -1371,7 +1371,7 @@ @ cdecl sqrt(double) msvcrt.sqrt @ cdecl srand(long) msvcrt.srand @ varargs sscanf(str str) msvcrt.sscanf -@ stub sscanf_s +@ varargs sscanf_s(str str) msvcrt.sscanf_s @ cdecl strcat(str str) msvcrt.strcat @ cdecl strcat_s(str long str) msvcrt.strcat_s @ cdecl strchr(str long) msvcrt.strchr diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 311d646..0e6c62e 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -908,7 +908,7 @@ @ stub _sprintf_p_l @ stub _sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l -@ stub _sscanf_s_l +@ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l @ stub _stat32 @ stub _stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 @@ -1355,7 +1355,7 @@ @ cdecl sqrt(double) msvcrt.sqrt @ cdecl srand(long) msvcrt.srand @ varargs sscanf(str str) msvcrt.sscanf -@ stub sscanf_s +@ varargs sscanf_s(str str) msvcrt.sscanf_s @ cdecl strcat(str str) msvcrt.strcat @ cdecl strcat_s(str long str) msvcrt.strcat_s @ cdecl strchr(str long) msvcrt.strchr diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index a5f47a9..a5705ac 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -858,7 +858,7 @@ # stub _sprintf_p_l # stub _sprintf_s_l @ varargs _sscanf_l(str str ptr) MSVCRT__sscanf_l -# stub _sscanf_s_l +@ varargs _sscanf_s_l(str str ptr) MSVCRT__sscanf_s_l @ cdecl _stat(str ptr) MSVCRT_stat @ cdecl _stat64(str ptr) MSVCRT_stat64 @ cdecl _stati64(str ptr) MSVCRT_stati64 @@ -1306,7 +1306,7 @@ @ cdecl sqrt(double) MSVCRT_sqrt @ cdecl srand(long) MSVCRT_srand @ varargs sscanf(str str) MSVCRT_sscanf -# stub sscanf_s +@ varargs sscanf_s(str str) MSVCRT_sscanf_s @ cdecl strcat(str str) ntdll.strcat @ cdecl strcat_s(str long str) MSVCRT_strcat_s @ cdecl strchr(str long) ntdll.strchr diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index a47a3e4..c9d5c56 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -87,6 +87,10 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { #undef SECURE #include "scanf.h"
+/* vsscanf_s_l */ +#define SECURE 1 +#include "scanf.h" + /* vswscanf_l */ #define WIDE_SCANF 1 #undef CONSOLE @@ -362,6 +366,35 @@ int CDECL MSVCRT__sscanf_l(const char *str, const char *format, }
/********************************************************************* + * sscanf_s (MSVCRT.@) + */ +int CDECL MSVCRT_sscanf_s(const char *str, const char *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vsscanf_s_l(str, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _sscanf_s_l (MSVCRT.@) + */ +int CDECL MSVCRT__sscanf_s_l(const char *str, const char *format, + MSVCRT__locale_t locale, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, locale); + res = MSVCRT_vsscanf_s_l(str, format, locale, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* * swscanf (MSVCRT.@) */ int CDECL MSVCRT_swscanf(const MSVCRT_wchar_t *str, const MSVCRT_wchar_t *format, ...)