From: Michael Tokarev Date: Fri, 4 May 2012 12:41:47 +0000 (+0400) Subject: add (errnum) in front of windows error messages X-Git-Tag: import-tinc-1.1~369^2~5 X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=42a8158b1dca6ee4ec1707176199cc36c26da7af;p=meshlink add (errnum) in front of windows error messages On localized, non-English versions of windows, it is common to have two active charsets -- for console applications and for GUI applications, together with localized error messages returned by windows. But two charsets are rarely compatible, so sending the same byte sequence to console and to windows event log makes one or another to be unreadable. So at least include the error number, this way it will be possible to lookup the actual error test using external ways. Signed-off-by: Michael Tokarev --- diff --git a/lib/utils.c b/lib/utils.c index 6ea904a5..405097bb 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -53,15 +53,17 @@ void bin2hex(char *src, char *dst, int length) { #endif const char *winerror(int err) { - static char buf[1024], *newline; + static char buf[1024], *ptr; + + ptr = buf + sprintf(buf, "(%d) ", err); if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) { - strncpy(buf, "(unable to format errormessage)", sizeof(buf)); + NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), ptr, sizeof(buf) - (ptr - buf), NULL)) { + strcpy(ptr, "(unable to format errormessage)"); }; - if((newline = strchr(buf, '\r'))) - *newline = '\0'; + if((ptr = strchr(buf, '\r'))) + *ptr = '\0'; return buf; }