[PATCH] msvcrt: Add vf[w]printf_p & vf[w]printf_p_l.

Gijs Vermeulen gijsvrm at gmail.com
Fri Oct 13 13:25:13 CDT 2017


Hi Piotr,

That does look a lot better, thanks!
I've sent an updated version.

Sincerely,
Gijs

2017-10-13 17:48 GMT+02:00 Piotr Caban <piotr.caban at gmail.com>:

> Hi Gijs,
>
> I think support for MSVCRT_PRINTF_POSITIONAL_PARAMS flag may be
> integrated into helper. Thanks to it you will be able to implement
> vfprintf_p without changing all helper callers. I'm thinking about
> something like this:
>
> static int vfprintf_helper(DWORD options, MSVCRT_FILE* file, const char
> *format,
>         MSVCRT__locale_t locale, __ms_va_list valist)
> {
>     printf_arg args_ctx[MSVCRT__ARGMAX+1];
>     BOOL tmp_buf;
>     int ret;
>
>     if(!MSVCRT_CHECK_PMT( file != NULL )) return -1;
>     if(!MSVCRT_CHECK_PMT( format != NULL )) return -1;
>
>     if(options & MSVCRT_PRINTF_POSITIONAL_PARAMS) {
>         memset(args_ctx, 0, sizeof(args_ctx));
>         ret = create_positional_ctx_a(args_ctx, format, valist);
>         if(ret < 0) {
>             MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0);
>             *MSVCRT__errno() = MSVCRT_EINVAL;
>             return ret;
>         } else if(!ret)
>             otions &= ~MSVCRT_PRINTF_POSITIONAL_PARAMS;
>     }
>
>     MSVCRT__lock_file(file);
>     tmp_buf = add_std_buffer(file);
>     ret = pf_printf_a(puts_clbk_file_a, file, format, locale, options,
>             options & MSVCRT_PRINTF_POSITIONAL_PARAMS ?
> arg_clbk_positional : arg_clbk_valist,
>             options & MSVCRT_PRINTF_POSITIONAL_PARAMS ? args_ctx : NULL,
> &valist);
>     if(tmp_buf) remove_std_buffer(file);
>     MSVCRT__unlock_file(file);
>
>     return ret;
> }
>
> Thanks,
> Piotr
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20171013/f5af9266/attachment.html>


More information about the wine-devel mailing list