Piotr Caban : msvcrt: Enable printf %z, %t and %j formats.

Alexandre Julliard julliard at winehq.org
Mon Nov 4 16:40:24 CST 2019


Module: wine
Branch: master
Commit: 97557ae168109492e73b5d47b005a3e6c466a954
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=97557ae168109492e73b5d47b005a3e6c466a954

Author: Piotr Caban <piotr at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 },




More information about the wine-cvs mailing list