[PATCH] ucrtbase: Implement vsscanf

Martin Storsjo martin at martin.st
Wed Oct 28 03:54:47 CDT 2015


Signed-off-by: Martin Storsjo <martin at martin.st>
---
This function probably also needs some adjustments for C99
compliance in corner cases, but hook up the existing function for
now, which should work for common/simple cases.

This goes on top of the ucrtbase printf patch that Piotr signed off
(otherwise there are conflicts in the spec files).
---
 .../api-ms-win-crt-stdio-l1-1-0/api-ms-win-crt-stdio-l1-1-0.spec | 2 +-
 dlls/msvcrt/scanf.c                                              | 9 +++++++++
 dlls/ucrtbase/Makefile.in                                        | 1 +
 dlls/ucrtbase/ucrtbase.spec                                      | 2 +-
 4 files changed, 12 insertions(+), 2 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 75549a7..2db8222 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
@@ -14,7 +14,7 @@
 @ cdecl __stdio_common_vsprintf(int64 ptr long ptr ptr ptr) ucrtbase.__stdio_common_vsprintf
 @ stub __stdio_common_vsprintf_p
 @ cdecl __stdio_common_vsprintf_s(int64 ptr long ptr ptr ptr) ucrtbase.__stdio_common_vsprintf_s
-@ stub __stdio_common_vsscanf
+@ cdecl __stdio_common_vsscanf(int64 ptr long ptr ptr ptr) ucrtbase.__stdio_common_vsscanf
 @ cdecl __stdio_common_vswprintf(int64 ptr long ptr ptr ptr) ucrtbase.__stdio_common_vswprintf
 @ stub __stdio_common_vswprintf_p
 @ stub __stdio_common_vswprintf_s
diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c
index 5dc6915..229d3ae 100644
--- a/dlls/msvcrt/scanf.c
+++ b/dlls/msvcrt/scanf.c
@@ -661,6 +661,15 @@ int CDECL MSVCRT__snscanf_s_l(char *input, MSVCRT_size_t length,
     return res;
 }
 
+
+/*********************************************************************
+ *		_snscanf_s_l (MSVCRT.@)
+ */
+int CDECL MSVCRT__stdio_common_vsscanf(unsigned __int64 options, const char *input, MSVCRT_size_t length, const char *format, MSVCRT__locale_t locale, __ms_va_list valist)
+{
+    return MSVCRT_vsnscanf_l(input, length, format, locale, valist);
+}
+
 /*********************************************************************
  *		_snwscanf (MSVCRT.@)
  */
diff --git a/dlls/ucrtbase/Makefile.in b/dlls/ucrtbase/Makefile.in
index 9e672f3..c1677ca 100644
--- a/dlls/ucrtbase/Makefile.in
+++ b/dlls/ucrtbase/Makefile.in
@@ -25,6 +25,7 @@ C_SRCS = \
 	mbcs.c \
 	misc.c \
 	process.c \
+	scanf.c \
 	string.c \
 	thread.c \
 	time.c \
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index c19c864..0e1a191 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -159,7 +159,7 @@
 @ cdecl __stdio_common_vsprintf(int64 ptr long ptr ptr ptr) MSVCRT__stdio_common_vsprintf
 @ stub __stdio_common_vsprintf_p
 @ cdecl __stdio_common_vsprintf_s(int64 ptr long ptr ptr ptr) MSVCRT__stdio_common_vsprintf_s
-@ stub __stdio_common_vsscanf
+@ cdecl __stdio_common_vsscanf(int64 ptr long ptr ptr ptr) MSVCRT__stdio_common_vsscanf
 @ cdecl __stdio_common_vswprintf(int64 ptr long ptr ptr ptr) MSVCRT__stdio_common_vswprintf
 @ stub __stdio_common_vswprintf_p
 @ stub __stdio_common_vswprintf_s
-- 
1.8.1.2




More information about the wine-patches mailing list