Alex Henrie : ucrtbase: Add __stdio_common_vsprintf_p.

Alexandre Julliard julliard at winehq.org
Sun Mar 18 09:02:31 CDT 2018


Module: wine
Branch: oldstable
Commit: 98811bc25544d22020820ed6c9e9bb14e914285e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=98811bc25544d22020820ed6c9e9bb14e914285e

Author: Alex Henrie <alexhenrie24 at gmail.com>
Date:   Fri Oct 13 20:11:24 2017 +0200

ucrtbase: Add __stdio_common_vsprintf_p.

Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 8b6eada458a632e443d653da23f997840ffa5d8c)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 .../api-ms-win-crt-stdio-l1-1-0.spec               |  2 +-
 dlls/msvcrt/wcs.c                                  | 33 ++++++++++++++++------
 dlls/ucrtbase/ucrtbase.spec                        |  2 +-
 3 files changed, 27 insertions(+), 10 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 6196fb4..8315d3c 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
@@ -12,7 +12,7 @@
 @ cdecl __stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) ucrtbase.__stdio_common_vsnprintf_s
 @ cdecl __stdio_common_vsnwprintf_s(int64 ptr long long wstr ptr ptr) ucrtbase.__stdio_common_vsnwprintf_s
 @ cdecl __stdio_common_vsprintf(int64 ptr long str ptr ptr) ucrtbase.__stdio_common_vsprintf
-@ stub __stdio_common_vsprintf_p
+@ cdecl __stdio_common_vsprintf_p(int64 ptr long str ptr ptr) ucrtbase.__stdio_common_vsprintf_p
 @ cdecl __stdio_common_vsprintf_s(int64 ptr long str ptr ptr) ucrtbase.__stdio_common_vsprintf_s
 @ cdecl __stdio_common_vsscanf(int64 ptr long str ptr ptr) ucrtbase.__stdio_common_vsscanf
 @ cdecl __stdio_common_vswprintf(int64 ptr long wstr ptr ptr) ucrtbase.__stdio_common_vswprintf
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 2ff9ec8..509f699 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -1447,11 +1447,8 @@ int CDECL MSVCRT_vswprintf_s_l(MSVCRT_wchar_t* str, MSVCRT_size_t numberOfElemen
             format, locale, args );
 }
 
-/*********************************************************************
- *		_vsprintf_p_l (MSVCRT.@)
- */
-int CDECL MSVCRT_vsprintf_p_l(char *buffer, MSVCRT_size_t length, const char *format,
-        MSVCRT__locale_t locale, __ms_va_list args)
+static int MSVCRT_vsprintf_p_l_opt(char *buffer, MSVCRT_size_t length, const char *format,
+        DWORD options, MSVCRT__locale_t locale, __ms_va_list args)
 {
     static const char nullbyte = '\0';
     printf_arg args_ctx[MSVCRT__ARGMAX+1];
@@ -1466,11 +1463,11 @@ int CDECL MSVCRT_vsprintf_p_l(char *buffer, MSVCRT_size_t length, const char *fo
         *MSVCRT__errno() = MSVCRT_EINVAL;
         return ret;
     } else if(ret == 0)
-        ret = pf_printf_a(puts_clbk_str_a, &puts_ctx, format, locale, MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER,
-                arg_clbk_valist, NULL, &args);
+        ret = pf_printf_a(puts_clbk_str_a, &puts_ctx, format, locale,
+                MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER | options, arg_clbk_valist, NULL, &args);
     else
         ret = pf_printf_a(puts_clbk_str_a, &puts_ctx, format, locale,
-                MSVCRT_PRINTF_POSITIONAL_PARAMS | MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER,
+                MSVCRT_PRINTF_POSITIONAL_PARAMS | MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER | options,
                 arg_clbk_positional, args_ctx, NULL);
 
     puts_clbk_str_a(&puts_ctx, 1, &nullbyte);
@@ -1478,6 +1475,15 @@ int CDECL MSVCRT_vsprintf_p_l(char *buffer, MSVCRT_size_t length, const char *fo
 }
 
 /*********************************************************************
+ *              _vsprintf_p_l (MSVCRT.@)
+ */
+int CDECL MSVCRT_vsprintf_p_l(char *buffer, MSVCRT_size_t length, const char *format,
+        MSVCRT__locale_t locale, __ms_va_list args)
+{
+    return MSVCRT_vsprintf_p_l_opt(buffer, length, format, 0, locale, args);
+}
+
+/*********************************************************************
  *		_vsprintf_p (MSVCRT.@)
  */
 int CDECL MSVCRT_vsprintf_p(char *buffer, MSVCRT_size_t length,
@@ -1487,6 +1493,17 @@ int CDECL MSVCRT_vsprintf_p(char *buffer, MSVCRT_size_t length,
 }
 
 /*********************************************************************
+ *              __stdio_common_vsprintf_p (UCRTBASE.@)
+ */
+int CDECL MSVCRT__stdio_common_vsprintf_p(unsigned __int64 options, char *buffer, MSVCRT_size_t length,
+        const char *format, MSVCRT__locale_t locale, __ms_va_list args)
+{
+    if (options & ~UCRTBASE_PRINTF_MASK)
+        FIXME("options %s not handled\n", wine_dbgstr_longlong(options));
+    return MSVCRT_vsprintf_p_l_opt(buffer, length, format, options & UCRTBASE_PRINTF_MASK, locale, args);
+}
+
+/*********************************************************************
  *		_sprintf_p_l (MSVCRT.@)
  */
 int CDECL MSVCRT_sprintf_p_l(char *buffer, MSVCRT_size_t length,
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index ee95ee4..deee852 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -157,7 +157,7 @@
 @ cdecl __stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) MSVCRT__stdio_common_vsnprintf_s
 @ cdecl __stdio_common_vsnwprintf_s(int64 ptr long long wstr ptr ptr) MSVCRT__stdio_common_vsnwprintf_s
 @ cdecl __stdio_common_vsprintf(int64 ptr long str ptr ptr) MSVCRT__stdio_common_vsprintf
-@ stub __stdio_common_vsprintf_p
+@ cdecl __stdio_common_vsprintf_p(int64 ptr long str ptr ptr) MSVCRT__stdio_common_vsprintf_p
 @ cdecl __stdio_common_vsprintf_s(int64 ptr long str ptr ptr) MSVCRT__stdio_common_vsprintf_s
 @ cdecl __stdio_common_vsscanf(int64 ptr long str ptr ptr) MSVCRT__stdio_common_vsscanf
 @ cdecl __stdio_common_vswprintf(int64 ptr long wstr ptr ptr) MSVCRT__stdio_common_vswprintf




More information about the wine-cvs mailing list