this patch implement required function usefull to close issue 50960.
Michele Dionisio (1): msvcrt: Add __stdio_common_vfprintf_p and __stdio_common_vfwprintf_p
.../api-ms-win-crt-private-l1-1-0.spec | 4 +-- .../api-ms-win-crt-stdio-l1-1-0.spec | 4 +-- dlls/msvcrt/file.c | 28 +++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 8 +++--- 4 files changed, 36 insertions(+), 8 deletions(-)
Signed-off-by: Michele Dionisio michele.dionisio@gmail.com --- .../api-ms-win-crt-private-l1-1-0.spec | 4 +-- .../api-ms-win-crt-stdio-l1-1-0.spec | 4 +-- dlls/msvcrt/file.c | 28 +++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 8 +++--- 4 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index 136358a174c..246dde7dbdf 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -147,11 +147,11 @@ @ cdecl _o___std_type_info_destroy_list(ptr) ucrtbase._o___std_type_info_destroy_list @ cdecl _o___std_type_info_name(ptr ptr) ucrtbase._o___std_type_info_name @ cdecl _o___stdio_common_vfprintf(int64 ptr str ptr ptr) ucrtbase._o___stdio_common_vfprintf -@ stub _o___stdio_common_vfprintf_p +@ cdecl _o___stdio_common_vfprintf_p(int64 ptr str ptr ptr) ucrtbase._o___stdio_common_vfprintf_p @ cdecl _o___stdio_common_vfprintf_s(int64 ptr str ptr ptr) ucrtbase._o___stdio_common_vfprintf_s @ cdecl _o___stdio_common_vfscanf(int64 ptr str ptr ptr) ucrtbase._o___stdio_common_vfscanf @ cdecl _o___stdio_common_vfwprintf(int64 ptr wstr ptr ptr) ucrtbase._o___stdio_common_vfwprintf -@ stub _o___stdio_common_vfwprintf_p +@ cdecl _o___stdio_common_vfwprintf_p(int64 ptr wstr ptr ptr) ucrtbase._o___stdio_common_vfwprintf_p @ cdecl _o___stdio_common_vfwprintf_s(int64 ptr wstr ptr ptr) ucrtbase._o___stdio_common_vfwprintf_s @ cdecl _o___stdio_common_vfwscanf(int64 ptr wstr ptr ptr) ucrtbase._o___stdio_common_vfwscanf @ cdecl _o___stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) ucrtbase._o___stdio_common_vsnprintf_s 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 19c06eaa67d..fce22df0357 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 @@ -2,11 +2,11 @@ @ cdecl __p__commode() ucrtbase.__p__commode @ cdecl __p__fmode() ucrtbase.__p__fmode @ cdecl __stdio_common_vfprintf(int64 ptr str ptr ptr) ucrtbase.__stdio_common_vfprintf -@ stub __stdio_common_vfprintf_p +@ cdecl __stdio_common_vfprintf_p(int64 ptr str ptr ptr) ucrtbase.__stdio_common_vfprintf_p @ 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 +@ cdecl __stdio_common_vfwprintf_p(int64 ptr wstr ptr ptr) ucrtbase.__stdio_common_vfwprintf_p @ cdecl __stdio_common_vfwprintf_s(int64 ptr wstr ptr ptr) ucrtbase.__stdio_common_vfwprintf_s @ cdecl __stdio_common_vfwscanf(int64 ptr wstr ptr ptr) ucrtbase.__stdio_common_vfwscanf @ cdecl __stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) ucrtbase.__stdio_common_vsnprintf_s diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index bf7496cc233..38221f84474 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -5257,6 +5257,20 @@ int CDECL _stdio_common_vfprintf(unsigned __int64 options, FILE *file, const cha return vfprintf_helper(options & UCRTBASE_PRINTF_MASK, file, format, locale, valist); }
+/********************************************************************* + * __stdio_common_vfprintf_p (UCRTBASE.@) + */ +int CDECL __stdio_common_vfprintf_p(unsigned __int64 options, FILE *file, const char *format, + _locale_t locale, __ms_va_list valist) +{ + if (options & ~UCRTBASE_PRINTF_MASK) + FIXME("options %s not handled\n", wine_dbgstr_longlong(options)); + + return vfprintf_helper((options & UCRTBASE_PRINTF_MASK) | MSVCRT_PRINTF_POSITIONAL_PARAMS + | MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER, file, format, locale, valist); +} + + /********************************************************************* * __stdio_common_vfprintf_s (UCRTBASE.@) */ @@ -5282,6 +5296,20 @@ int CDECL __stdio_common_vfwprintf(unsigned __int64 options, FILE *file, const w return vfwprintf_helper(options & UCRTBASE_PRINTF_MASK, file, format, locale, valist); }
+/********************************************************************* + * __stdio_common_vfwprintf_p (UCRTBASE.@) + */ +int CDECL __stdio_common_vfwprintf_p(unsigned __int64 options, FILE *file, const wchar_t *format, + _locale_t locale, __ms_va_list valist) +{ + if (options & ~UCRTBASE_PRINTF_MASK) + FIXME("options %s not handled\n", wine_dbgstr_longlong(options)); + + return vfwprintf_helper((options & UCRTBASE_PRINTF_MASK) | MSVCRT_PRINTF_POSITIONAL_PARAMS + | MSVCRT_PRINTF_INVOKE_INVALID_PARAM_HANDLER, file, format, locale, valist); +} + + /********************************************************************* * __stdio_common_vfwprintf_s (UCRTBASE.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 8f331825fc4..cc6f2e70f6b 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -147,11 +147,11 @@ @ cdecl __std_type_info_hash(ptr) @ cdecl __std_type_info_name(ptr ptr) @ cdecl __stdio_common_vfprintf(int64 ptr str ptr ptr) _stdio_common_vfprintf -@ stub __stdio_common_vfprintf_p +@ cdecl __stdio_common_vfprintf_p(int64 ptr str ptr ptr) @ cdecl __stdio_common_vfprintf_s(int64 ptr str ptr ptr) @ cdecl __stdio_common_vfscanf(int64 ptr str ptr ptr) @ cdecl __stdio_common_vfwprintf(int64 ptr wstr ptr ptr) -@ stub __stdio_common_vfwprintf_p +@ cdecl __stdio_common_vfwprintf_p(int64 ptr wstr ptr ptr) @ cdecl __stdio_common_vfwprintf_s(int64 ptr wstr ptr ptr) @ cdecl __stdio_common_vfwscanf(int64 ptr wstr ptr ptr) @ cdecl __stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) @@ -811,11 +811,11 @@ @ cdecl _o___std_type_info_destroy_list(ptr) __std_type_info_destroy_list @ cdecl _o___std_type_info_name(ptr ptr) __std_type_info_name @ cdecl _o___stdio_common_vfprintf(int64 ptr str ptr ptr) _stdio_common_vfprintf -@ stub _o___stdio_common_vfprintf_p +@ cdecl _o___stdio_common_vfprintf_p(int64 ptr str ptr ptr) __stdio_common_vfprintf_p @ cdecl _o___stdio_common_vfprintf_s(int64 ptr str ptr ptr) __stdio_common_vfprintf_s @ cdecl _o___stdio_common_vfscanf(int64 ptr str ptr ptr) __stdio_common_vfscanf @ cdecl _o___stdio_common_vfwprintf(int64 ptr wstr ptr ptr) __stdio_common_vfwprintf -@ stub _o___stdio_common_vfwprintf_p +@ cdecl _o___stdio_common_vfwprintf_p(int64 ptr wstr ptr ptr) __stdio_common_vfwprintf_p @ cdecl _o___stdio_common_vfwprintf_s(int64 ptr wstr ptr ptr) __stdio_common_vfwprintf_s @ cdecl _o___stdio_common_vfwscanf(int64 ptr wstr ptr ptr) __stdio_common_vfwscanf @ cdecl _o___stdio_common_vsnprintf_s(int64 ptr long long str ptr ptr) __stdio_common_vsnprintf_s
Signed-off-by: Piotr Caban piotr@codeweavers.com