Module: wine Branch: master Commit: 86ebd5eee06c6d6b351dcad1154243acaf8f4fdf URL: http://source.winehq.org/git/wine.git/?a=commit;h=86ebd5eee06c6d6b351dcad115...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Fri Jul 15 07:49:58 2016 +0000
regedit: Use Unicode when printing system error messages.
Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/regedit/regedit.c | 2 +- programs/regedit/regproc.c | 25 +++++++++++++------------ programs/regedit/regproc.h | 1 + 3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c index 55f2b8d..c0a1eab 100644 --- a/programs/regedit/regedit.c +++ b/programs/regedit/regedit.c @@ -28,7 +28,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(regedit);
-static void output_writeconsole(const WCHAR *str, DWORD wlen) +void output_writeconsole(const WCHAR *str, DWORD wlen) { DWORD count, ret;
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index f072650..4a27bd5 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -31,8 +31,11 @@ #include <winreg.h> #include <assert.h> #include <wine/unicode.h> +#include <wine/debug.h> #include "regproc.h"
+WINE_DEFAULT_DEBUG_CHANNEL(regedit); + #define REG_VAL_BUF_SIZE 4096
/* maximal number of characters in hexadecimal data line, @@ -856,20 +859,18 @@ static void processRegLinesW(FILE *in)
static void REGPROC_print_error(void) { - LPVOID lpMsgBuf; - DWORD error_code; - int status; - - error_code = GetLastError (); - status = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, error_code, 0, (LPSTR) &lpMsgBuf, 0, NULL); - if (!status) { - fprintf(stderr, "regedit: Cannot display message for error %d, status %d\n", - error_code, GetLastError()); + WCHAR *str; + DWORD error_code, len; + + error_code = GetLastError(); + len = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, error_code, 0, (WCHAR *)&str, 0, NULL); + if (len == 0 && GetLastError() != NO_ERROR) { + WINE_FIXME("FormatMessage failed: le=%u, previous=%u\n", GetLastError(), error_code); exit(1); } - puts(lpMsgBuf); - LocalFree(lpMsgBuf); + output_writeconsole(str, len); + LocalFree(str); exit(1); }
diff --git a/programs/regedit/regproc.h b/programs/regedit/regproc.h index aff4bee..bc46009 100644 --- a/programs/regedit/regproc.h +++ b/programs/regedit/regproc.h @@ -24,6 +24,7 @@ #define REG_FORMAT_5 1 #define REG_FORMAT_4 2
+void output_writeconsole(const WCHAR *str, DWORD wlen); void __cdecl output_message(unsigned int id, ...);
BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format);