From f22769f81a2384219c6cb0f6b9f6daf4ac3c8857 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 24 Aug 2016 12:58:31 +0100 Subject: [PATCH] ucrtbase: Add __stdio_common_vswscanf(). Signed-off-by: Huw Davies Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- .../api-ms-win-crt-stdio-l1-1-0.spec | 2 +- dlls/msvcrt/scanf.c | 22 ++++++++++++++++++- dlls/ucrtbase/ucrtbase.spec | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/dlls/api-ms-win-crt-stdio-l1-1-0/api-ms-win-crt-stdio-l1-1-0.spec b/dlls/api-ms-win-crt-stdio-l1-1-0/api-ms-win-crt-stdio-l1-1-0.spec index 0dc03b885f0..af723f7ea68 100644 --- a/dlls/api-ms-win-crt-stdio-l1-1-0/api-ms-win-crt-stdio-l1-1-0.spec +++ b/dlls/api-ms-win-crt-stdio-l1-1-0/api-ms-win-crt-stdio-l1-1-0.spec @@ -18,7 +18,7 @@ @ cdecl __stdio_common_vswprintf(int64 ptr long wstr ptr ptr) ucrtbase.__stdio_common_vswprintf @ cdecl __stdio_common_vswprintf_p(int64 ptr long wstr ptr ptr) ucrtbase.__stdio_common_vswprintf_p @ cdecl __stdio_common_vswprintf_s(int64 ptr long wstr ptr ptr) ucrtbase.__stdio_common_vswprintf_s -@ stub __stdio_common_vswscanf +@ cdecl __stdio_common_vswscanf(int64 ptr long wstr ptr ptr) ucrtbase.__stdio_common_vswscanf @ cdecl _chsize(long long) ucrtbase._chsize @ cdecl _chsize_s(long int64) ucrtbase._chsize_s @ cdecl _close(long) ucrtbase._close diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c index 579dec56d54..093424ac356 100644 --- a/dlls/msvcrt/scanf.c +++ b/dlls/msvcrt/scanf.c @@ -66,7 +66,7 @@ static int wchar2digit(MSVCRT_wchar_t c, int base) { #undef SECURE #include "scanf.h" -/* vfscanf_l */ +/* vfscanf_s_l */ #define SECURE 1 #include "scanf.h" @@ -682,6 +682,26 @@ int CDECL MSVCRT__stdio_common_vsscanf(unsigned __int64 options, return MSVCRT_vsnscanf_l(input, length, format, locale, valist); } +/********************************************************************* + * __stdio_common_vswscanf (MSVCRT.@) + */ +int CDECL MSVCRT__stdio_common_vswscanf(unsigned __int64 options, + const MSVCRT_wchar_t *input, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, + MSVCRT__locale_t locale, + __ms_va_list valist) +{ + /* LEGACY_WIDE_SPECIFIERS only has got an effect on the wide + * scanf. LEGACY_MSVCRT_COMPATIBILITY affects parsing of nan/inf, + * but parsing of those isn't implemented at all yet. */ + if (options & ~UCRTBASE_SCANF_MASK) + FIXME("options %s not handled\n", wine_dbgstr_longlong(options)); + if (options & UCRTBASE_SCANF_SECURECRT) + return MSVCRT_vsnwscanf_s_l(input, length, format, locale, valist); + else + return MSVCRT_vsnwscanf_l(input, length, format, locale, valist); +} + /********************************************************************* * __stdio_common_vfwscanf (MSVCRT.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index d20ef71331e..6ec16d96bb1 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -163,7 +163,7 @@ @ cdecl __stdio_common_vswprintf(int64 ptr long wstr ptr ptr) MSVCRT__stdio_common_vswprintf @ cdecl __stdio_common_vswprintf_p(int64 ptr long wstr ptr ptr) MSVCRT__stdio_common_vswprintf_p @ cdecl __stdio_common_vswprintf_s(int64 ptr long wstr ptr ptr) MSVCRT__stdio_common_vswprintf_s -@ stub __stdio_common_vswscanf +@ cdecl __stdio_common_vswscanf(int64 ptr long wstr ptr ptr) MSVCRT__stdio_common_vswscanf @ stub __strncnt @ cdecl __sys_errlist() @ cdecl __sys_nerr()