[PATCH 2/3] ucrtbase: Add __stdio_common_vfprintf_s.
Alex Henrie
alexhenrie24 at gmail.com
Mon Sep 4 13:06:57 CDT 2017
https://bugs.winehq.org/show_bug.cgi?id=43046
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
.../api-ms-win-crt-stdio-l1-1-0.spec | 2 +-
dlls/msvcrt/file.c | 27 ++++++++++++++++++++++
dlls/ucrtbase/ucrtbase.spec | 2 +-
3 files changed, 29 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 6acd08ecad..6196fb49ca 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
@@ -3,7 +3,7 @@
@ cdecl __p__fmode() ucrtbase.__p__fmode
@ cdecl __stdio_common_vfprintf(int64 ptr str ptr ptr) ucrtbase.__stdio_common_vfprintf
@ stub __stdio_common_vfprintf_p
-@ stub __stdio_common_vfprintf_s
+@ cdecl __stdio_common_vfprintf_s(int64 ptr str ptr ptr) ucrtbase.__stdio_common_vfprintf_s
@ cdecl __stdio_common_vfscanf(int64 ptr str ptr ptr) ucrtbase.__stdio_common_vfscanf
@ cdecl __stdio_common_vfwprintf(int64 ptr wstr ptr ptr) ucrtbase.__stdio_common_vfwprintf
@ stub __stdio_common_vfwprintf_p
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 6dcb194cd8..1c63202f01 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -5131,6 +5131,33 @@ int CDECL MSVCRT__stdio_common_vfprintf(unsigned __int64 options, MSVCRT_FILE *f
return ret;
}
+/*********************************************************************
+ * __stdio_common_vfprintf_s (UCRTBASE.@)
+ */
+int CDECL MSVCRT__stdio_common_vfprintf_s(unsigned __int64 options, MSVCRT_FILE *file, const char *format,
+ MSVCRT__locale_t locale, __ms_va_list valist)
+{
+ BOOL tmp_buf;
+ int ret;
+
+ if (!MSVCRT_CHECK_PMT(file != NULL)) return -1;
+
+ MSVCRT__lock_file(file);
+ tmp_buf = add_std_buffer(file);
+
+ if (options & ~UCRTBASE_PRINTF_MASK)
+ FIXME("options %s not handled\n", wine_dbgstr_longlong(options));
+
+ ret = pf_printf_a(puts_clbk_file_a, file, format, locale,
+ (options & UCRTBASE_PRINTF_MASK) | MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER,
+ arg_clbk_valist, NULL, &valist);
+
+ if (tmp_buf) remove_std_buffer(file);
+ MSVCRT__unlock_file(file);
+
+ return ret;
+}
+
/*********************************************************************
* __stdio_common_vfwprintf (UCRTBASE.@)
*/
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index ce1e24e1ef..6ba0ae04ed 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -148,7 +148,7 @@
@ cdecl __std_type_info_name(ptr ptr) MSVCRT_type_info_name_list
@ cdecl __stdio_common_vfprintf(int64 ptr str ptr ptr) MSVCRT__stdio_common_vfprintf
@ stub __stdio_common_vfprintf_p
-@ stub __stdio_common_vfprintf_s
+@ cdecl __stdio_common_vfprintf_s(int64 ptr str ptr ptr) MSVCRT__stdio_common_vfprintf_s
@ cdecl __stdio_common_vfscanf(int64 ptr str ptr ptr) MSVCRT__stdio_common_vfscanf
@ cdecl __stdio_common_vfwprintf(int64 ptr wstr ptr ptr) MSVCRT__stdio_common_vfwprintf
@ stub __stdio_common_vfwprintf_p
--
2.14.1
More information about the wine-patches
mailing list