From 6ecaea3102df14bfd9ef96e8fa62d78eb4d617c2 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 21 Apr 2025 19:56:49 +0300 Subject: [PATCH] engine: system: convert Windows username to utf8 --- engine/common/system.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/engine/common/system.c b/engine/common/system.c index dc420335..1f180ffd 100644 --- a/engine/common/system.c +++ b/engine/common/system.c @@ -128,11 +128,17 @@ const char *Sys_GetCurrentUser( void ) { // TODO: move to platform #if XASH_WIN32 - static string s_userName; - unsigned long size = sizeof( s_userName ); + static wchar_t sw_userName[MAX_STRING]; + DWORD size = ARRAYSIZE( sw_userName ); - if( GetUserName( s_userName, &size )) + if( GetUserNameW( sw_userName, &size ) && sw_userName[0] != 0 ) + { + static char s_userName[MAX_STRING * 4]; + + // set length to -1, so it will null terminate + WideCharToMultiByte( CP_UTF8, 0, sw_userName, -1, s_userName, sizeof( s_userName ), NULL, NULL ); return s_userName; + } #elif XASH_PSVITA static string username; sceAppUtilSystemParamGetString( SCE_SYSTEM_PARAM_ID_USERNAME, username, sizeof( username ) - 1 );