Module: wine Branch: master Commit: bd1428ef50a49b2f99505e9be39c24faf0a33c1d URL: http://source.winehq.org/git/wine.git/?a=commit;h=bd1428ef50a49b2f99505e9be3...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Jan 20 13:43:09 2015 +0100
msvcrt: Add _vscprintf_p implementation.
---
dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr110/msvcr110.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 4 ++-- dlls/msvcr120_app/msvcr120_app.spec | 4 ++-- dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/wcs.c | 36 ++++++++++++++++++++++++++++++++++++ 8 files changed, 49 insertions(+), 13 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 29cbe7f..c1eb594 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1446,8 +1446,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) MSVCRT__vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) MSVCRT__vscwprintf_p diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 9017921..c0bc9e1 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1804,8 +1804,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) MSVCRT__vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) MSVCRT__vscwprintf_p diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index c675436..0faf1f0 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1819,8 +1819,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) MSVCRT__vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) MSVCRT__vscwprintf_p diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 760f8f9..eddb27d 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1516,8 +1516,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) msvcr120._vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) msvcr120._vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) msvcr120._vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) msvcr120._vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) msvcr120._vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) msvcr120._vscwprintf_p diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index fbe42f3..13a2270 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1126,8 +1126,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) MSVCRT__vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) MSVCRT__vscwprintf_p diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 9623aa5..e53f622 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1101,8 +1101,8 @@ @ stub _vprintf_s_l @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf @ stub _vscprintf_l -@ stub _vscprintf_p -@ stub _vscprintf_p_l +@ cdecl _vscprintf_p(str ptr) MSVCRT__vscprintf_p +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p(wstr ptr) MSVCRT__vscwprintf_p diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 141cd9e..7156a50 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1059,7 +1059,7 @@ @ cdecl _utime(str ptr) @ cdecl _vscprintf(str ptr) MSVCRT__vscprintf # stub _vscprintf_l(str ptr ptr) -# stub _vscprintf_p_l(str ptr ptr) +@ cdecl _vscprintf_p_l(str ptr ptr) MSVCRT__vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) MSVCRT__vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) MSVCRT__vscwprintf_l @ cdecl _vscwprintf_p_l(wstr ptr ptr) MSVCRT__vscwprintf_p_l diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 935c264..771f6f6 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -825,6 +825,42 @@ int CDECL MSVCRT__vscprintf( const char *format, __ms_va_list valist ) }
/********************************************************************* + * _vscprintf_p_l (MSVCRT.@) + */ +int CDECL MSVCRT__vscprintf_p_l(const char *format, + MSVCRT__locale_t locale, __ms_va_list args) +{ + printf_arg args_ctx[MSVCRT__ARGMAX+1]; + struct _str_ctx_a puts_ctx = {INT_MAX, NULL}; + int ret; + + memset(args_ctx, 0, sizeof(args_ctx)); + + ret = create_positional_ctx_a(args_ctx, format, args); + if(ret < 0) { + MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0); + *MSVCRT__errno() = MSVCRT_EINVAL; + return ret; + } else if(ret == 0) { + ret = pf_printf_a(puts_clbk_str_a, &puts_ctx, format, locale, FALSE, TRUE, + arg_clbk_valist, NULL, &args); + } else { + ret = pf_printf_a(puts_clbk_str_a, &puts_ctx, format, locale, TRUE, TRUE, + arg_clbk_positional, args_ctx, NULL); + } + + return ret; +} + +/********************************************************************* + * _vscprintf_p (MSVCR80.@) + */ +int CDECL MSVCRT__vscprintf_p(const char *format, __ms_va_list argptr) +{ + return MSVCRT__vscprintf_p_l(format, NULL, argptr); +} + +/********************************************************************* * _snprintf (MSVCRT.@) */ int CDECL MSVCRT__snprintf(char *str, unsigned int len, const char *format, ...)