strerror: honor Unicode API choice on Windows

Closes #6005
This commit is contained in:
Javier Blazquez 2020-09-23 17:33:21 -07:00 committed by Daniel Stenberg
parent c4693adc62
commit bed5f8454a
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
1 changed files with 7 additions and 15 deletions

View File

@ -44,6 +44,7 @@
#endif
#include "strerror.h"
#include "curl_multibyte.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@ -661,28 +662,19 @@ get_winapi_error(int err, char *buf, size_t buflen)
*buf = '\0';
#ifdef _WIN32_WCE
{
wchar_t wbuf[256];
TCHAR wbuf[256];
wbuf[0] = L'\0';
if(FormatMessage((FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
size_t written = wcstombs(buf, wbuf, buflen - 1);
if(written != (size_t)-1)
buf[written] = '\0';
else
*buf = '\0';
LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(TCHAR), NULL)) {
char *msg = curlx_convert_tchar_to_UTF8(wbuf);
strncpy(buf, msg, buflen - 1);
buf[buflen-1] = '\0';
curlx_unicodefree(msg);
}
}
#else
if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
LANG_NEUTRAL, buf, (DWORD)buflen, NULL)) {
*buf = '\0';
}
#endif
/* Truncate multiple lines */
p = strchr(buf, '\n');