Module: wine Branch: master Commit: 97557ae168109492e73b5d47b005a3e6c466a954 URL: https://source.winehq.org/git/wine.git/?a=commit;h=97557ae168109492e73b5d47b...
Author: Piotr Caban piotr@codeweavers.com Date: Sat Nov 2 14:39:28 2019 +0100
msvcrt: Enable printf %z, %t and %j formats.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/printf.h | 10 ++++++---- dlls/msvcrt/tests/printf.c | 11 ++++++----- 2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/dlls/msvcrt/printf.h b/dlls/msvcrt/printf.h index 20bd77e792..d7f3b6f225 100644 --- a/dlls/msvcrt/printf.h +++ b/dlls/msvcrt/printf.h @@ -515,15 +515,17 @@ int FUNC_NAME(pf_printf)(FUNC_NAME(puts_clbk) pf_puts, void *puts_ctx, const API break; } else if(*p == 'w') flags.WideString = *p++; -#if _MSVCR_VER >= 140 - else if(*p == 'z' || *p == 't') +#if _MSVCR_VER == 0 || _MSVCR_VER >= 140 + else if((*p == 'z' || *p == 't') && p[1] && strchr("diouxX", p[1])) flags.IntegerNative = *p++; - else if(*p == 'T') - flags.NaturalString = *p++; else if(*p == 'j') { flags.IntegerDouble++; p++; } +#endif +#if _MSVCR_VER >= 140 + else if(*p == 'T') + flags.NaturalString = *p++; #endif else if((*p == 'F' || *p == 'N') && legacy_msvcrt_compat) p++; /* ignore */ diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index d1fe292143..4c153dab9e 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -163,8 +163,10 @@ static void test_sprintf( void ) { "%Ihd", "Ihd", 0, INT_ARG, 1 }, { "%I0d", "I0d", 0, INT_ARG, 1 }, { "%I64D", "D", 0, ULONGLONG_ARG, 0, -1 }, - { "%zx", "1", "zx", TODO_FLAG | INT_ARG, 1 }, - { "%z", "1", "z", TODO_FLAG | INT_ARG, 1 }, + { "%zx", "1", "zx", INT_ARG, 1 }, + { "%z", "z", 0, INT_ARG, 1 }, + { "%tx", "1", "tx", INT_ARG, 1 }, + { "%t", "t", 0, INT_ARG, 1 }, { "% d", " 1", 0, INT_ARG, 1 }, { "%+ d", "+1", 0, INT_ARG, 1 }, { "%S", "wide", 0, PTR_ARG, 0, 0, 0, L"wide" }, @@ -216,9 +218,8 @@ static void test_sprintf( void ) { "%u", "4294967295", 0, INT_ARG, -1 }, { "%w", "", 0, INT_ARG, -1 }, { "%h", "", 0, INT_ARG, -1 }, - { "%z", "z", 0, INT_ARG, -1 }, - { "%j", "", "j", TODO_FLAG | ULONGLONG_ARG, 0, -1 }, - { "%jd", "-1", "jd", TODO_FLAG | ULONGLONG_ARG, 0, -1 }, + { "%j", "", "j", ULONGLONG_ARG, 0, -1 }, + { "%jd", "-1", "jd", ULONGLONG_ARG, 0, -1 }, { "%F", "", 0, INT_ARG, -1 }, { "%N", "", 0, INT_ARG, -1 }, { "%H", "H", 0, INT_ARG, -1 },