mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
Debug (Windows): ensures UTF-8 output
This commit is contained in:
@@ -1,16 +1,18 @@
|
||||
#include "common/debug.h"
|
||||
#include "common/windows/nt.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
const char* ffDebugWin32Error(DWORD errorCode) {
|
||||
static char buffer[256];
|
||||
static char buffer[512];
|
||||
|
||||
DWORD len = FormatMessageA(
|
||||
wchar_t bufferW[256];
|
||||
ULONG len = FormatMessageW(
|
||||
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
(DWORD) errorCode,
|
||||
0,
|
||||
buffer,
|
||||
bufferW,
|
||||
sizeof(buffer),
|
||||
NULL);
|
||||
|
||||
@@ -18,10 +20,15 @@ const char* ffDebugWin32Error(DWORD errorCode) {
|
||||
snprintf(buffer, sizeof(buffer), "Unknown error code (%lu)", errorCode);
|
||||
} else {
|
||||
// Remove trailing newline
|
||||
while (len > 0 && (buffer[len - 1] == '\r' || buffer[len - 1] == '\n')) {
|
||||
buffer[--len] = '\0';
|
||||
while (len > 0 && (bufferW[len - 1] == '\r' || bufferW[len - 1] == '\n')) {
|
||||
--len;
|
||||
}
|
||||
|
||||
if (NT_SUCCESS(RtlUnicodeToUTF8N(buffer, sizeof(buffer), &len, bufferW, len * sizeof(wchar_t)))) {
|
||||
snprintf(buffer + len, sizeof(buffer) - len, " (%lu)", errorCode);
|
||||
} else {
|
||||
snprintf(buffer, sizeof(buffer), "Unknown error (%lu)", errorCode);
|
||||
}
|
||||
snprintf(buffer + len, sizeof(buffer) - len + 2, " (%lu)", errorCode);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
|
||||
Reference in New Issue
Block a user