Huw Davies : ucrtbase: Add __stdio_common_vswscanf().

Alexandre Julliard julliard at winehq.org
Thu Aug 25 10:39:36 CDT 2016


Module: wine
Branch: master
Commit: f22769f81a2384219c6cb0f6b9f6daf4ac3c8857
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f22769f81a2384219c6cb0f6b9f6daf4ac3c8857

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Aug 24 12:58:31 2016 +0100

ucrtbase: Add __stdio_common_vswscanf().

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 .../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 0dc03b8..af723f7 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 579dec5..093424a 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"
 
@@ -683,6 +683,26 @@ int CDECL MSVCRT__stdio_common_vsscanf(unsigned __int64 options,
 }
 
 /*********************************************************************
+ *		__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.@)
  */
 int CDECL MSVCRT__stdio_common_vfwscanf(unsigned __int64 options,
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index d20ef71..6ec16d9 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()




More information about the wine-cvs mailing list