Alexandre Bique : msvcrt: Implement missing sprintf functions.

Alexandre Julliard julliard at winehq.org
Tue Dec 10 14:44:06 CST 2013


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

Author: Alexandre Bique <bique.alexandre at gmail.com>
Date:   Mon Dec  9 12:57:19 2013 +0100

msvcrt: Implement missing sprintf functions.

---

 dlls/msvcr100/msvcr100.spec |    6 +++---
 dlls/msvcr110/msvcr110.spec |    6 +++---
 dlls/msvcr80/msvcr80.spec   |    6 +++---
 dlls/msvcr90/msvcr90.spec   |    6 +++---
 dlls/msvcrt/msvcrt.spec     |    6 +++---
 dlls/msvcrt/wcs.c           |   37 +++++++++++++++++++++++++++++++++++++
 6 files changed, 52 insertions(+), 15 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index b5c8614..4de2266 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1317,10 +1317,10 @@
 @ cdecl _spawnvpe(long str ptr ptr) msvcrt._spawnvpe
 @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath
 @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s
-@ stub _sprintf_l
+@ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l
 @ varargs _sprintf_p(ptr long str)
 @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l
-@ stub _sprintf_s_l
+@ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l
 @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
 @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
 @ cdecl _stat32(str ptr)
@@ -1461,7 +1461,7 @@
 @ cdecl _vsprintf_l(ptr str ptr ptr) msvcrt._vsprintf_l
 @ cdecl _vsprintf_p(ptr long str ptr) msvcrt._vsprintf_p
 @ cdecl _vsprintf_p_l(ptr long str ptr ptr) msvcrt._vsprintf_p_l
-@ stub _vsprintf_s_l
+@ cdecl _vsprintf_s_l(ptr long str ptr ptr) msvcrt._vsprintf_s_l
 @ cdecl _vswprintf(ptr wstr ptr) msvcrt._vswprintf
 @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c
 @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index f37bdd7..a656f4e 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1675,10 +1675,10 @@
 @ cdecl _spawnvpe(long str ptr ptr) msvcrt._spawnvpe
 @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath
 @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s
-@ stub _sprintf_l
+@ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l
 @ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p
 @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l
-@ stub _sprintf_s_l
+@ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l
 @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
 @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
 @ cdecl _stat32(str ptr) msvcr100._stat32
@@ -1819,7 +1819,7 @@
 @ cdecl _vsprintf_l(ptr str ptr ptr) msvcrt._vsprintf_l
 @ cdecl _vsprintf_p(ptr long str ptr) msvcrt._vsprintf_p
 @ cdecl _vsprintf_p_l(ptr long str ptr ptr) msvcrt._vsprintf_p_l
-@ stub _vsprintf_s_l
+@ cdecl _vsprintf_s_l(ptr long str ptr ptr) msvcrt._vsprintf_s_l
 @ cdecl _vswprintf(ptr wstr ptr) msvcrt._vswprintf
 @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c
 @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 6090a4b..db174f4 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -997,10 +997,10 @@
 @ cdecl _spawnvpe(long str ptr ptr) msvcrt._spawnvpe
 @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath
 @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s
-@ stub _sprintf_l
+@ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l
 @ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p
 @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l
-@ stub _sprintf_s_l
+@ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l
 @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
 @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
 @ cdecl _stat32(str ptr) msvcr100._stat32
@@ -1140,7 +1140,7 @@
 @ cdecl _vsprintf_l(ptr str ptr ptr) msvcrt._vsprintf_l
 @ cdecl _vsprintf_p(ptr long str ptr) msvcrt._vsprintf_p
 @ cdecl _vsprintf_p_l(ptr long str ptr ptr) msvcrt._vsprintf_p_l
-@ stub _vsprintf_s_l
+@ cdecl _vsprintf_s_l(ptr long str ptr ptr) msvcrt._vsprintf_s_l
 @ cdecl _vswprintf(ptr wstr ptr) msvcrt._vswprintf
 @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c
 @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 4a30bb1..2b260e0 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -972,10 +972,10 @@
 @ cdecl _spawnvpe(long str ptr ptr) msvcrt._spawnvpe
 @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath
 @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s
-@ stub _sprintf_l
+@ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l
 @ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p
 @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l
-@ stub _sprintf_s_l
+@ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l
 @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
 @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
 @ cdecl _stat32(str ptr) msvcr100._stat32
@@ -1116,7 +1116,7 @@
 @ cdecl _vsprintf_l(ptr str ptr ptr) msvcrt._vsprintf_l
 @ cdecl _vsprintf_p(ptr long str ptr) msvcrt._vsprintf_p
 @ cdecl _vsprintf_p_l(ptr long str ptr ptr) msvcrt._vsprintf_p_l
-@ stub _vsprintf_s_l
+@ cdecl _vsprintf_s_l(ptr long str ptr ptr) msvcrt._vsprintf_s_l
 @ cdecl _vswprintf(ptr wstr ptr) msvcrt._vswprintf
 @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c
 @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index cbeca9e..7f59bdb 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -939,9 +939,9 @@
 @ cdecl _spawnvpe(long str ptr ptr) MSVCRT__spawnvpe
 @ cdecl _splitpath(str ptr ptr ptr ptr)
 @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long)
-# stub _sprintf_l(ptr str ptr)
+@ varargs _sprintf_l(ptr str ptr) MSVCRT_sprintf_l
 @ varargs _sprintf_p_l(ptr long str ptr) MSVCRT_sprintf_p_l
-# stub _sprintf_s_l(ptr long str ptr)
+@ varargs _sprintf_s_l(ptr long str ptr) MSVCRT_sprintf_s_l
 @ varargs _sscanf_l(str str ptr) MSVCRT__sscanf_l
 @ varargs _sscanf_s_l(str str ptr) MSVCRT__sscanf_s_l
 @ cdecl _stat(str ptr) MSVCRT_stat
@@ -1076,7 +1076,7 @@
 @ cdecl _vsprintf_l(ptr str ptr ptr) MSVCRT_vsprintf_l
 @ cdecl _vsprintf_p(ptr long str ptr) MSVCRT_vsprintf_p
 @ cdecl _vsprintf_p_l(ptr long str ptr ptr) MSVCRT_vsprintf_p_l
-# stub _vsprintf_s_l(ptr long str ptr ptr)
+@ cdecl _vsprintf_s_l(ptr long str ptr ptr) MSVCRT_vsprintf_s_l
 @ cdecl _vswprintf(ptr wstr ptr) MSVCRT_vswprintf
 @ cdecl _vswprintf_c(ptr long wstr ptr) MSVCRT_vsnwprintf
 @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) MSVCRT_vsnwprintf_l
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 28e05d9..12458a8 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -647,6 +647,20 @@ int CDECL MSVCRT_vsprintf_l( char *str, const char *format,
 }
 
 /*********************************************************************
+ *		_sprintf_l (MSVCRT.@)
+ */
+int CDECL MSVCRT_sprintf_l(char *str, const char *format,
+                           MSVCRT__locale_t locale, ...)
+{
+    int retval;
+    __ms_va_list valist;
+    __ms_va_start(valist, locale);
+    retval = MSVCRT_vsnprintf_l(str, INT_MAX, format, locale, valist);
+    __ms_va_end(valist);
+    return retval;
+}
+
+/*********************************************************************
  *		_vsnprintf_s_l (MSVCRT.@)
  */
 int CDECL MSVCRT_vsnprintf_s_l( char *str, MSVCRT_size_t sizeOfBuffer,
@@ -682,6 +696,29 @@ int CDECL MSVCRT_vsnprintf_s_l( char *str, MSVCRT_size_t sizeOfBuffer,
 }
 
 /*********************************************************************
+ *		_vsprintf_s_l (MSVCRT.@)
+ */
+int CDECL MSVCRT_vsprintf_s_l( char *str, MSVCRT_size_t count, const char *format,
+                               MSVCRT__locale_t locale, __ms_va_list valist )
+{
+    return MSVCRT_vsnprintf_s_l(str, INT_MAX, count, format, locale, valist);
+}
+
+/*********************************************************************
+ *		_sprintf_s_l (MSVCRT.@)
+ */
+int CDECL MSVCRT_sprintf_s_l( char *str, MSVCRT_size_t count, const char *format,
+                              MSVCRT__locale_t locale, ...)
+{
+    int retval;
+    __ms_va_list valist;
+    __ms_va_start(valist, locale);
+    retval = MSVCRT_vsnprintf_s_l(str, INT_MAX, count, format, locale, valist);
+    __ms_va_end(valist);
+    return retval;
+}
+
+/*********************************************************************
  *              _vsnprintf_s (MSVCRT.@)
  */
 int CDECL MSVCRT_vsnprintf_s( char *str, MSVCRT_size_t sizeOfBuffer,




More information about the wine-cvs mailing list