Module: wine Branch: master Commit: 3b994417702cdce37387836e097bdcde34c0be02 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3b994417702cdce37387836e09...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Apr 22 13:52:18 2010 +0200
msvcrt: Added _fwscanf_s(_l) implementation.
---
dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/msvcrt.spec | 4 ++-- dlls/msvcrt/scanf.c | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 47b7076..756a56a 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -459,7 +459,7 @@ @ stub _fwprintf_s_l @ stub _fwrite_nolock @ varargs _fwscanf_l(ptr wstr ptr) msvcrt._fwscanf_l -@ stub _fwscanf_s_l +@ varargs _fwscanf_s_l(ptr wstr ptr) msvcrt._fwscanf_s_l @ cdecl _gcvt(double long str) msvcrt._gcvt @ stub _gcvt_s @ stub _get_amblksiz @@ -1281,7 +1281,7 @@ @ stub fwprintf_s @ cdecl fwrite(ptr long long ptr) msvcrt.fwrite @ varargs fwscanf(ptr wstr) msvcrt.fwscanf -@ stub fwscanf_s +@ varargs fwscanf_s(ptr wstr) msvcrt.fwscanf_s @ cdecl getc(ptr) msvcrt.getc @ cdecl getchar() msvcrt.getchar @ cdecl getenv(str) msvcrt.getenv diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index c53761f..ecdcd6d 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -451,7 +451,7 @@ @ stub _fwprintf_s_l @ stub _fwrite_nolock @ varargs _fwscanf_l(ptr wstr ptr) msvcrt._fwscanf_l -@ stub _fwscanf_s_l +@ varargs _fwscanf_s_l(ptr wstr ptr) msvcrt._fwscanf_s_l @ cdecl _gcvt(double long str) msvcrt._gcvt @ stub _gcvt_s @ stub _get_amblksiz @@ -1265,7 +1265,7 @@ @ stub fwprintf_s @ cdecl fwrite(ptr long long ptr) msvcrt.fwrite @ varargs fwscanf(ptr wstr) msvcrt.fwscanf -@ stub fwscanf_s +@ varargs fwscanf_s(ptr wstr) msvcrt.fwscanf_s @ cdecl getc(ptr) msvcrt.getc @ cdecl getchar() msvcrt.getchar @ cdecl getenv(str) msvcrt.getenv diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index f2cd471..d5e10cf 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -421,7 +421,7 @@ # stub _fwprintf_p_l # stub _fwprintf_s_l @ varargs _fwscanf_l(ptr wstr ptr) MSVCRT__fwscanf_l -# stub _fwscanf_s_l +@ varargs _fwscanf_s_l(ptr wstr ptr) MSVCRT__fwscanf_s_l @ cdecl _gcvt(double long str) # stub _gcvt_s # stub _get_doserrno @@ -1212,7 +1212,7 @@ # stub fwprintf_s @ cdecl fwrite(ptr long long ptr) MSVCRT_fwrite @ varargs fwscanf(ptr wstr) MSVCRT_fwscanf -# stub fwscanf_s +@ varargs fwscanf_s(ptr wstr) MSVCRT_fwscanf_s @ cdecl getc(ptr) MSVCRT_getc @ cdecl getchar() MSVCRT_getchar @ cdecl getenv(str) MSVCRT_getenv diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index fb2a6a1..498651e 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -65,6 +65,7 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { #undef SECURE #include "scanf.h"
+/* vfscanf_l */ #define SECURE 1 #include "scanf.h"
@@ -75,6 +76,10 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { #undef SECURE #include "scanf.h"
+/* vfwscanf_s_l */ +#define SECURE 1 +#include "scanf.h" + /* vsscanf_l */ #undef WIDE_SCANF #undef CONSOLE @@ -241,6 +246,35 @@ int CDECL MSVCRT__fwscanf_l(MSVCRT_FILE *file, const MSVCRT_wchar_t *format, }
/********************************************************************* + * fwscanf_s (MSVCRT.@) + */ +int CDECL MSVCRT_fwscanf_s(MSVCRT_FILE *file, const MSVCRT_wchar_t *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vfwscanf_s_l(file, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _fwscanf_s_l (MSVCRT.@) + */ +int CDECL MSVCRT__fwscanf_s_l(MSVCRT_FILE *file, 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(file, format, locale, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* * wscanf (MSVCRT.@) */ int CDECL MSVCRT_wscanf(const MSVCRT_wchar_t *format, ...)