From 97557ae168109492e73b5d47b005a3e6c466a954 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Sat, 2 Nov 2019 14:39:28 +0100 Subject: [PATCH] msvcrt: Enable printf %z, %t and %j formats. Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- 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 20bd77e7920..d7f3b6f2251 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 d1fe292143b..4c153dab9e8 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 },