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