Piotr Caban : msvcrt: Added _snwscanf implementation.

Alexandre Julliard julliard at winehq.org
Tue Apr 5 11:23:33 CDT 2011


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

Author: Piotr Caban <piotr at 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;
+}




More information about the wine-cvs mailing list