From 43436f64d858eec8b12b3427a95bf534093ef681 Mon Sep 17 00:00:00 2001 From: Andrew Nguyen Date: Sun, 18 Apr 2010 09:10:08 -0500 Subject: [PATCH] kernel32: Unify the format_message ANSI and Unicode helpers. --- dlls/kernel32/format_msg.c | 120 ++----------------------------------- 1 file changed, 6 insertions(+), 114 deletions(-) diff --git a/dlls/kernel32/format_msg.c b/dlls/kernel32/format_msg.c index adb24f2c512..a5426ae98de 100644 --- a/dlls/kernel32/format_msg.c +++ b/dlls/kernel32/format_msg.c @@ -260,118 +260,10 @@ static LPCWSTR format_insert( BOOL unicode_caller, int insert, LPCWSTR format, } /********************************************************************** - * format_messageA (internal) + * format_message (internal) */ -static LPWSTR format_messageA( DWORD dwFlags, LPCWSTR fmtstr, struct format_args *format_args ) -{ - LPWSTR target,t; - DWORD talloced; - LPCWSTR f; - DWORD width = dwFlags & FORMAT_MESSAGE_MAX_WIDTH_MASK; - BOOL eos = FALSE; - WCHAR ch; - - target = t = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, 100 * sizeof(WCHAR)); - talloced = 100; - -#define ADD_TO_T(c) do { \ - *t++=c;\ - if ((DWORD)(t-target) == talloced) {\ - target = HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,target,talloced*2*sizeof(WCHAR));\ - t = target+talloced;\ - talloced*=2;\ - }\ -} while (0) - - f = fmtstr; - if (dwFlags & FORMAT_MESSAGE_IGNORE_INSERTS) { - while (*f && !eos) - ADD_TO_T(*f++); - } - else { - while (*f && !eos) { - if (*f=='%') { - int insertnr; - WCHAR *str,*x; - - f++; - if (!*f) { - ADD_TO_T('%'); - continue; - } - switch (*f) { - case '1':case '2':case '3':case '4':case '5': - case '6':case '7':case '8':case '9': - insertnr = *f-'0'; - switch (f[1]) { - case '0':case '1':case '2':case '3': - case '4':case '5':case '6':case '7': - case '8':case '9': - f++; - insertnr = insertnr*10 + *f-'0'; - f++; - break; - default: - f++; - break; - } - f = format_insert( FALSE, insertnr, f, dwFlags, format_args, &str ); - for (x = str; *x; x++) ADD_TO_T(*x); - HeapFree( GetProcessHeap(), 0, str ); - break; - case 'n': - ADD_TO_T('\r'); - ADD_TO_T('\n'); - f++; - break; - case '0': - eos = TRUE; - f++; - break; - default: - ADD_TO_T(*f++); - break; - } - } else { - ch = *f; - f++; - if (ch == '\r') { - if (*f == '\n') - f++; - if(width) - ADD_TO_T(' '); - else - { - ADD_TO_T('\r'); - ADD_TO_T('\n'); - } - } else { - if (ch == '\n') - { - if(width) - ADD_TO_T(' '); - else - { - ADD_TO_T('\r'); - ADD_TO_T('\n'); - } - } - else - ADD_TO_T(ch); - } - } - } - } - *t = '\0'; - - return target; -} -#undef ADD_TO_T - -/********************************************************************** - * format_messageW (internal) - */ -static LPWSTR format_messageW( DWORD dwFlags, LPCWSTR fmtstr, struct format_args *format_args ) +static LPWSTR format_message( BOOL unicode_caller, DWORD dwFlags, LPCWSTR fmtstr, + struct format_args *format_args ) { LPWSTR target,t; DWORD talloced; @@ -425,7 +317,7 @@ static LPWSTR format_messageW( DWORD dwFlags, LPCWSTR fmtstr, struct format_args f++; break; } - f = format_insert( TRUE, insertnr, f, dwFlags, format_args, &str ); + f = format_insert( unicode_caller, insertnr, f, dwFlags, format_args, &str ); for (x = str; *x; x++) ADD_TO_T(*x); HeapFree( GetProcessHeap(), 0, str ); break; @@ -540,7 +432,7 @@ DWORD WINAPI FormatMessageA( if (!from) return 0; } - target = format_messageA( dwFlags, from, &format_args ); + target = format_message( FALSE, dwFlags, from, &format_args ); TRACE("-- %s\n", debugstr_w(target)); destlength = WideCharToMultiByte(CP_ACP, 0, target, -1, NULL, 0, NULL, NULL); @@ -630,7 +522,7 @@ DWORD WINAPI FormatMessageW( if (!from) return 0; } - target = format_messageW( dwFlags, from, &format_args ); + target = format_message( TRUE, dwFlags, from, &format_args ); talloced = strlenW(target)+1; TRACE("-- %s\n",debugstr_w(target));