Piotr Caban : msvcrt: Added _wscanf_s(_l) implementation.

Alexandre Julliard julliard at winehq.org
Thu Apr 22 11:24:04 CDT 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Apr 22 13:52:33 2010 +0200

msvcrt: Added _wscanf_s(_l) implementation.

---

 dlls/msvcr80/msvcr80.spec |    4 ++--
 dlls/msvcr90/msvcr90.spec |    4 ++--
 dlls/msvcrt/msvcrt.spec   |    4 ++--
 dlls/msvcrt/scanf.c       |   29 +++++++++++++++++++++++++++++
 4 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 756a56a..a6bb276 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1179,7 +1179,7 @@
 @ cdecl _write(long ptr long) msvcrt._write
 @ cdecl _wrmdir(wstr) msvcrt._wrmdir
 @ varargs _wscanf_l(wstr ptr) msvcrt._wscanf_l
-@ stub _wscanf_s_l
+@ varargs _wscanf_s_l(wstr ptr) msvcrt._wscanf_s_l
 @ cdecl _wsearchenv(wstr wstr ptr) msvcrt._wsearchenv
 @ stub _wsearchenv_s
 @ cdecl _wsetlocale(long wstr) msvcrt._wsetlocale
@@ -1465,4 +1465,4 @@
 @ varargs wprintf(wstr) msvcrt.wprintf
 @ stub wprintf_s
 @ varargs wscanf(wstr) msvcrt.wscanf
-@ stub wscanf_s
+@ varargs wscanf_s(wstr) msvcrt.wscanf_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index ecdcd6d..311d646 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1163,7 +1163,7 @@
 @ cdecl _write(long ptr long) msvcrt._write
 @ cdecl _wrmdir(wstr) msvcrt._wrmdir
 @ varargs _wscanf_l(wstr ptr) msvcrt._wscanf_l
-@ stub _wscanf_s_l
+@ varargs _wscanf_s_l(wstr ptr) msvcrt._wscanf_s_l
 @ cdecl _wsearchenv(wstr wstr ptr) msvcrt._wsearchenv
 @ stub _wsearchenv_s
 @ cdecl _wsetlocale(long wstr) msvcrt._wsetlocale
@@ -1449,4 +1449,4 @@
 @ varargs wprintf(wstr) msvcrt.wprintf
 @ stub wprintf_s
 @ varargs wscanf(wstr) msvcrt.wscanf
-@ stub wscanf_s
+@ varargs wscanf_s(wstr) msvcrt.wscanf_s
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index d5e10cf..a5f47a9 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1108,7 +1108,7 @@
 @ cdecl _write(long ptr long) MSVCRT__write
 @ cdecl _wrmdir(wstr)
 @ varargs _wscanf_l(wstr ptr) MSVCRT__wscanf_l
-# stub _wscanf_s_l
+@ varargs _wscanf_s_l(wstr ptr) MSVCRT__wscanf_s_l
 @ cdecl _wsearchenv(wstr wstr ptr)
 # stub _wsearchenv_s
 @ cdecl _wsetlocale(long wstr) MSVCRT__wsetlocale
@@ -1405,7 +1405,7 @@
 @ varargs wprintf(wstr) MSVCRT_wprintf
 # stub wprintf_s
 @ varargs wscanf(wstr) MSVCRT_wscanf
-# stub wscanf_s
+@ varargs wscanf_s(wstr) MSVCRT_wscanf_s
 
 # Functions not exported in native dll:
 @ cdecl _get_invalid_parameter_handler()
diff --git a/dlls/msvcrt/scanf.c b/dlls/msvcrt/scanf.c
index 498651e..a47a3e4 100644
--- a/dlls/msvcrt/scanf.c
+++ b/dlls/msvcrt/scanf.c
@@ -304,6 +304,35 @@ int CDECL MSVCRT__wscanf_l(const MSVCRT_wchar_t *format,
 }
 
 /*********************************************************************
+ *		wscanf_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_wscanf_s(const MSVCRT_wchar_t *format, ...)
+{
+    __ms_va_list valist;
+    int res;
+
+    __ms_va_start(valist, format);
+    res = MSVCRT_vfwscanf_s_l(MSVCRT_stdin, format, NULL, valist);
+    __ms_va_end(valist);
+    return res;
+}
+
+/*********************************************************************
+ *		_wscanf_s_l (MSVCRT.@)
+ */
+int CDECL MSVCRT__wscanf_s_l(const MSVCRT_wchar_t *format,
+        MSVCRT__locale_t locale, ...)
+{
+    __ms_va_list valist;
+    int res;
+
+    __ms_va_start(valist, locale);
+    res = MSVCRT_vfwscanf_s_l(MSVCRT_stdin, format, locale, valist);
+    __ms_va_end(valist);
+    return res;
+}
+
+/*********************************************************************
  *		sscanf (MSVCRT.@)
  */
 int CDECL MSVCRT_sscanf(const char *str, const char *format, ...)




More information about the wine-cvs mailing list