Module: wine Branch: master Commit: d09ab74d9bc6d6ad8221a22b315b53705cbccad7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d09ab74d9bc6d6ad8221a22b31...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Apr 5 17:07:17 2011 +0200
msvcrt: Added _snwscanf implementation.
---
dlls/msvcr100/msvcr100.spec | 8 ++-- dlls/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 8 ++-- dlls/msvcr90/msvcr90.spec | 8 ++-- dlls/msvcrt/msvcrt.spec | 8 ++-- dlls/msvcrt/scanf.c | 69 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 87 insertions(+), 18 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 569192c..c1f6e47 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1101,10 +1101,10 @@ @ stub _snwprintf_l @ varargs _snwprintf_s(ptr long long wstr) msvcrt._snwprintf_s @ stub _snwprintf_s_l -@ stub _snwscanf -@ stub _snwscanf_l -@ stub _snwscanf_s -@ stub _snwscanf_s_l +@ varargs _snwscanf(wstr long wstr) msvcrt._snwscanf +@ varargs _snwscanf_l(wstr long wstr ptr) msvcrt._snwscanf_l +@ varargs _snwscanf_s(wstr long wstr) msvcrt._snwscanf_s +@ varargs _snwscanf_s_l(wstr long wstr ptr) msvcrt._snwscanf_s_l @ varargs _sopen(str long long) msvcrt._sopen @ cdecl _sopen_s(ptr str long long long) msvcrt._sopen_s @ varargs _spawnl(long str str) msvcrt._spawnl diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index 815262d..58bdb0c 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -528,7 +528,7 @@ @ varargs _snprintf(ptr long str) msvcrt._snprintf @ varargs _snscanf(str long str) msvcrt._snscanf @ varargs _snwprintf(ptr long wstr) msvcrt._snwprintf -@ stub _snwscanf +@ varargs _snwscanf(wstr long wstr) msvcrt._snwscanf @ varargs _sopen(str long long) msvcrt._sopen @ varargs _spawnl(long str str) msvcrt._spawnl @ varargs _spawnle(long str str) msvcrt._spawnle diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index de8fffe..0d2744b 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -524,7 +524,7 @@ @ varargs _snprintf(str long str) msvcrt._snprintf @ varargs _snscanf(str long str) msvcrt._snscanf @ varargs _snwprintf(wstr long wstr) msvcrt._snwprintf -@ stub _snwscanf +@ varargs _snwscanf(wstr long wstr) msvcrt._snwscanf @ varargs _sopen(str long long) msvcrt._sopen @ varargs _spawnl(long str str) msvcrt._spawnl @ varargs _spawnle(long str str) msvcrt._spawnle diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 813f20a..6b898a5 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -955,10 +955,10 @@ @ stub _snwprintf_l @ varargs _snwprintf_s(ptr long long wstr) msvcrt._snwprintf_s @ stub _snwprintf_s_l -@ stub _snwscanf -@ stub _snwscanf_l -@ stub _snwscanf_s -@ stub _snwscanf_s_l +@ varargs _snwscanf(wstr long wstr) msvcrt._snwscanf +@ varargs _snwscanf_l(wstr long wstr ptr) msvcrt._snwscanf_l +@ varargs _snwscanf_s(wstr long wstr) msvcrt._snwscanf_s +@ varargs _snwscanf_s_l(wstr long wstr ptr) msvcrt._snwscanf_s_l @ varargs _sopen(str long long) msvcrt._sopen @ cdecl _sopen_s(ptr str long long long) msvcrt._sopen_s @ varargs _spawnl(long str str) msvcrt._spawnl diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index b27bbbb..43582cd 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -941,10 +941,10 @@ @ stub _snwprintf_l @ varargs _snwprintf_s(ptr long long wstr) msvcrt._snwprintf_s @ stub _snwprintf_s_l -@ stub _snwscanf -@ stub _snwscanf_l -@ stub _snwscanf_s -@ stub _snwscanf_s_l +@ varargs _snwscanf(wstr long wstr) msvcrt._snwscanf +@ varargs _snwscanf_l(wstr long wstr ptr) msvcrt._snwscanf_l +@ varargs _snwscanf_s(wstr long wstr) msvcrt._snwscanf_s +@ varargs _snwscanf_s_l(wstr long wstr ptr) msvcrt._snwscanf_s_l @ varargs _sopen(str long long) msvcrt._sopen @ cdecl _sopen_s(ptr str long long long) msvcrt._sopen_s @ varargs _spawnl(long str str) msvcrt._spawnl diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 43bcec0..ef88e71 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -884,10 +884,10 @@ # stub _snwprintf_l @ varargs _snwprintf_s(ptr long long wstr) MSVCRT__snwprintf_s # stub _snwprintf_s_l -# stub _snwscanf -# stub _snwscanf_l -# stub _snwscanf_s -# stub _snwscanf_s_l +@ varargs _snwscanf(wstr long wstr) MSVCRT__snwscanf +@ varargs _snwscanf_l(wstr long wstr ptr) MSVCRT__snwscanf_l +@ varargs _snwscanf_s(wstr long wstr) MSVCRT__snwscanf_s +@ varargs _snwscanf_s_l(wstr long wstr ptr) MSVCRT__snwscanf_s_l @ varargs _sopen(str long long) MSVCRT__sopen @ cdecl _sopen_s(ptr str long long long) MSVCRT__sopen_s @ varargs _spawnl(long str str) diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index d02892c..b998400 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -99,6 +99,15 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { /* vsnscanf_s_l */ #define SECURE #include "scanf.h" + +/* vsnwscanf_l */ +#define WIDE_SCANF 1 +#undef SECURE +#include "scanf.h" + +/* vsnwscanf_s_l */ +#define SECURE 1 +#include "scanf.h" #undef STRING_LEN
/* vswscanf_l */ @@ -650,3 +659,63 @@ int CDECL MSVCRT__snscanf_s_l(char *input, MSVCRT_size_t length, __ms_va_end(valist); return res; } + +/********************************************************************* + * _snwscanf (MSVCRT.@) + */ +int CDECL MSVCRT__snwscanf(MSVCRT_wchar_t *input, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vsnwscanf_l(input, length, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _snwscanf_l (MSVCRT.@) + */ +int CDECL MSVCRT__snwscanf_l(MSVCRT_wchar_t *input, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, MSVCRT__locale_t locale, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, locale); + res = MSVCRT_vsnwscanf_l(input, length, format, locale, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _snwscanf_s (MSVCRT.@) + */ +int CDECL MSVCRT__snwscanf_s(MSVCRT_wchar_t *input, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, format); + res = MSVCRT_vsnwscanf_s_l(input, length, format, NULL, valist); + __ms_va_end(valist); + return res; +} + +/********************************************************************* + * _snscanf_s_l (MSVCRT.@) + */ +int CDECL MSVCRT__snwscanf_s_l(MSVCRT_wchar_t *input, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, MSVCRT__locale_t locale, ...) +{ + __ms_va_list valist; + int res; + + __ms_va_start(valist, locale); + res = MSVCRT_vsnwscanf_s_l(input, length, format, locale, valist); + __ms_va_end(valist); + return res; +}