Andrew Nguyen : kernel32: Process CRLF escape sequences in normal insert sequence processing path in FormatMessageA /W.

Alexandre Julliard julliard at winehq.org
Wed Apr 28 16:35:47 CDT 2010


Module: wine
Branch: master
Commit: 722fd58446b67e57fe1082667c46f008e4edf783
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=722fd58446b67e57fe1082667c46f008e4edf783

Author: Andrew Nguyen <anguyen at codeweavers.com>
Date:   Wed Apr 28 04:20:44 2010 -0500

kernel32: Process CRLF escape sequences in normal insert sequence processing path in FormatMessageA/W.

---

 dlls/kernel32/format_msg.c       |    8 ++++++++
 dlls/kernel32/tests/format_msg.c |   14 ++++++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/format_msg.c b/dlls/kernel32/format_msg.c
index d610573..c93514f 100644
--- a/dlls/kernel32/format_msg.c
+++ b/dlls/kernel32/format_msg.c
@@ -360,6 +360,14 @@ static LPWSTR format_message( BOOL unicode_caller, DWORD dwFlags, LPCWSTR fmtstr
                     ADD_TO_T('\n');
                     f++;
                     break;
+                case 'r':
+                    ADD_TO_T('\r');
+                    f++;
+                    break;
+                case 't':
+                    ADD_TO_T('\t');
+                    f++;
+                    break;
                 case '0':
                     eos = TRUE;
                     f++;
diff --git a/dlls/kernel32/tests/format_msg.c b/dlls/kernel32/tests/format_msg.c
index 24dfd3b..397665c 100644
--- a/dlls/kernel32/tests/format_msg.c
+++ b/dlls/kernel32/tests/format_msg.c
@@ -84,6 +84,7 @@ static void test_message_from_string_wide(void)
     static const WCHAR fmt_t0t[]     = {'t','e','s','t','%','0','t','e','s','t',0};
     static const WCHAR fmt_yah[]     = {'y','a','h','%','!','%','0',' ',' ',' ',0};
     static const WCHAR fmt_space[]   = {'%',' ','%',' ',' ',' ',0};
+    static const WCHAR fmt_nrt[]     = {'%','n','%','r','%','t',0};
     static const WCHAR fmt_hi_lf[]   = {'h','i','\n',0};
     static const WCHAR fmt_hi_crlf[] = {'h','i','\r','\n',0};
     static const WCHAR fmt_cr[]      = {'\r',0};
@@ -108,6 +109,7 @@ static void test_message_from_string_wide(void)
     static const WCHAR s_2dot147[]   = {' ','.','.',' ',' ','4','2','7',0};
     static const WCHAR s_yah[]       = {'y','a','h','!',0};
     static const WCHAR s_space[]     = {' ',' ',' ',' ',0};
+    static const WCHAR s_nrt[]       = {'\r','\n','\r','\t',0};
     static const WCHAR s_hi_crlf[]   = {'h','i','\r','\n',0};
     static const WCHAR s_crlf[]      = {'\r','\n',0};
     static const WCHAR s_crlfcrlf[]  = {'\r','\n','\r','\n',0};
@@ -327,6 +329,12 @@ static void test_message_from_string_wide(void)
     ok(!lstrcmpW(s_space, out), "failed out=%s\n", wine_dbgstr_w(out));
     ok(r==4,"failed: r=%d\n", r);
 
+    /* %n yields \r\n, %r yields \r, %t yields \t */
+    r = doitW(FORMAT_MESSAGE_FROM_STRING, fmt_nrt, 0,
+        0, out, sizeof(out)/sizeof(WCHAR));
+    ok(!lstrcmpW(s_nrt, out), "failed out=%s\n", wine_dbgstr_w(out));
+    ok(r==4,"failed: r=%d\n", r);
+
     /* line feed */
     r = doitW(FORMAT_MESSAGE_FROM_STRING, fmt_hi_lf, 0,
         0, out, sizeof(out)/sizeof(WCHAR));
@@ -624,6 +632,12 @@ static void test_message_from_string(void)
     ok(!strcmp("    ", out),"failed out=[%s]\n",out);
     ok(r==4,"failed: r=%d\n",r);
 
+    /* %n yields \r\n, %r yields \r, %t yields \t */
+    r = doit(FORMAT_MESSAGE_FROM_STRING, "%n%r%t", 0,
+        0, out, sizeof(out)/sizeof(CHAR));
+    ok(!strcmp("\r\n\r\t", out),"failed out=[%s]\n",out);
+    ok(r==4,"failed: r=%d\n",r);
+
     /* line feed */
     r = doit(FORMAT_MESSAGE_FROM_STRING, "hi\n", 0,
         0, out, sizeof(out)/sizeof(CHAR));




More information about the wine-cvs mailing list