Commit Graph

48 Commits

Author SHA1 Message Date
Piotr Caban 111e4221ac msvcrt: Reimplement %a printf format handling.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-08 21:01:33 +02:00
Piotr Caban c638730b6d msvcrt: Reimplement special doubles printing.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-08 21:01:33 +02:00
Piotr Caban bfa1e3ef8f msvcrt: Use internal sprintf implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-08 21:01:33 +02:00
Piotr Caban 97557ae168 msvcrt: Enable printf %z, %t and %j formats.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-04 12:13:16 +01:00
Piotr Caban 1309e11ea1 msvcrt: Improve printf %I format support.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-04 12:13:11 +01:00
Ambrož Bizjak 3b6b28bce5 ucrtbase: Implement t and j printf length modifiers.
Signed-off-by: Ambroz Bizjak <abizjak.pro@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-01 20:31:14 +01:00
Felix Hädicke 90e520b418 msvcrt: Use memmove() instead of memcpy() puts_clbk_str().
memcpy() must not be used here, because results are undefined if the
memory areas overlap. This can cause problems, particularly if
particular compiler optimisations are enabled.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47918
Signed-off-by: Felix Hädicke <felixhaedicke@web.de>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-16 12:30:50 +02:00
Piotr Caban 3f675c1a9d msvcrt: Use internal toupper implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:50:32 +01:00
Piotr Caban a808235e45 msvcrt: Use mbtowc/wctomb for string conversion in printf.
This changes printf behaviour for C locale.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-15 15:06:28 +01:00
Michael Stefaniuc af4821ca81 msvcrt: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-15 21:01:09 +02:00
Fabian Maurer 058be4304e msvcrt: Don't crash if _vsnwprintf gets NULL as format string and add test.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-04 15:04:02 +01:00
Gijs Vermeulen 7f9c2dabc3 msvcrt: Add vf[w]printf_p & vf[w]printf_p_l.
Signed-off-by: Gijs Vermeulen <gijsvrm@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-10-16 15:26:32 +02:00
Józef Kucia 2a2f525eb3 msvcrt: Fix precision handling for string arguments.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-31 20:15:32 +02:00
Carlo Bramini 5f2b9d5968 msvcrt: Use return value of *printf() instead of calling strlen() and simplify code.
Signed-off-by: Carlo Bramini <carlo_bramini@users.sourceforge.net>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-22 16:44:33 +01:00
Piotr Caban 1680e98427 msvcrt: Improve multibyte characters support in printf.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-15 16:06:30 -06:00
Huw Davies 10eb6fa718 ucrtbase: Add support for natural string widths.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-09 21:59:59 +09:00
Martin Storsjo 4a79e54917 ucrtbase: Handle the C99 'z' size_t specifier for integers.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:19:32 +09:00
Martin Storsjo 494572ed4d msvcrt: Interpret 'I' as size_t size specifier for integer conversions.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:19:27 +09:00
Martin Storsjo b9d0f5d562 ucrtbase: Implement the new printf corner case behaviour.
Check the option flags whether the new or old legacy behaviours are
wanted.

For _MSVCR_VER < 140, don't check the option flags but hardcode them to
TRUE. (This avoids having to manually add all three flags into every
caller of pf_printf.) Mask out any other flags, to avoid other
out-of-range flags to be interpreted as the other flags (positional
params, invoke invalid param handler).

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:19:12 +09:00
Martin Storsjo 1d17e85026 msvcrt: Ignore 'N' as format length modifier for pointers, just like 'F'.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:19:07 +09:00
Martin Storsjo 1c8412d9e5 msvcrt: Refactor pf_printf to take options as flags instead of as BOOL parameter.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:18:56 +09:00
Piotr Caban 46db64ce1b msvcrt: Fix NAN handling in printf. 2015-03-25 22:40:06 +09:00
Hugh McMaster 828a46898d msvcrt: Fix a spelling error. 2014-12-22 13:37:15 +01:00
Piotr Caban e70bf5f8c6 msvcrt: Fix compilation errors on Mingw. 2014-04-16 18:00:01 +02:00
Piotr Caban 2693ce1a25 msvcrt: Don't add 0x prefix while printing 0 with printf. 2014-03-20 17:44:05 +01:00
Piotr Caban bffc240b4e msvcrt: Fix loop condition when printing Inf or NaN. 2013-09-17 16:26:01 +02:00
Piotr Caban 6594212dd6 msvcrt: Fix Inf and NaN handling in printf function. 2013-09-16 19:51:04 +02:00
Max Kellermann cee65e9409 msvcrt: Fix character/byte confusion in buffer overflow branch. 2013-05-07 11:16:08 +02:00
Piotr Caban 9c4be83a78 msvcrt: Added _set_output_format implementation. 2013-03-27 12:13:20 +01:00
Piotr Caban d958ecbc69 msvcrt: Fixed floating point numbers printing when flags.Sign=' '. 2012-12-12 11:59:55 +01:00
Alexandre Julliard 06989a0483 msvcrt: Make sure that errno is always set when calling the invalid parameter handler. 2012-07-26 11:05:32 +02:00
Piotr Caban 0cc16fc8a5 msvcrt: Fixed 'h' modifier handling when printing integers. 2012-04-16 18:56:15 +02:00
André Hentschel 36217c208f msvcrt: Fix a typo. 2012-03-26 12:41:27 +02:00
Piotr Caban 79c19aef29 msvcrt: Fixed printf behaviour on hexadecimal, zero-padded numbers. 2012-03-13 10:26:05 +01:00
Alexandre Julliard 88d632aec3 msvcrt: Fix formatting of pointers in printf. 2011-12-21 16:05:04 +01:00
Piotr Caban d7b5c0b14f msvcrt: Fix %f format handling in printf so it works with big floats. 2011-07-26 16:33:40 +02:00
Marcus Meissner 034c2cb3fd mscvrt: Do not shadow fmt (Coverity). 2011-06-14 15:24:55 +02:00
Piotr Caban ab9077d640 msvcrt: Fixed buffer overflow in snprintf functions family.
Spotted by Andrew Miller.
2011-06-06 21:49:22 +02:00
Piotr Caban 6991ac0331 msvcrt: Use get_locinfo instead of get_locale. 2011-05-25 11:45:42 +02:00
Piotr Caban 64cf208040 msvcrt: Don't pass NULL as __ms_va_list in printf implementation. 2011-05-11 17:49:16 +02:00
Piotr Caban 6ecabf7cae msvcrt: Added _set_printf_count_output and _get_printf_count_output implementation. 2011-04-28 11:08:06 +02:00
Piotr Caban 10901e17b4 msvcrt: Remove wchar_t/char conversions needed for pf_integer_conv. 2011-04-27 13:27:34 +02:00
Piotr Caban 8e58cbd8cb msvcrt: Use pf_integer_conv when displaying pointers. 2011-04-27 13:26:38 +02:00
Piotr Caban 0f9f0a1613 msvcrt: Don't use additional buffer in pf_integer_conv. 2011-04-27 13:26:36 +02:00
Piotr Caban 35cc03d54c msvcrt: Print all integers using pf_integer_conv function. 2011-04-27 13:19:14 +02:00
Piotr Caban 00182ca6d9 msvcrt: Added sprintf_p_l implementation. 2011-04-27 13:18:59 +02:00
Piotr Caban bfc2f5f2a5 msvcrt: Use callback based printf in sprintf functions family. 2011-04-25 14:36:36 +02:00
Piotr Caban 056dfb26ce msvcrt: Copy and reorganize printf implementation. 2011-04-25 14:36:19 +02:00