Skip to content

Commit 301e2e4

Browse files
committed
xrGame: implement reading palyer username from /etc/passwd entry
1 parent 1b5bf40 commit 301e2e4

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/xrGame/ui/UICDkey.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
#include "player_name_modifyer.h"
1010
#include "xrGameSpy/GameSpy_GP.h"
1111
#include "xrCore/os_clipboard.h"
12+
#ifdef LINUX
13+
#include <sys/types.h>
14+
#include <pwd.h>
15+
#endif
1216

1317
string64 gsCDKey = "";
1418
LPCSTR AddHyphens(LPCSTR c);
@@ -225,12 +229,28 @@ void WriteCDKey_ToRegistry(LPSTR cdkey)
225229
void GetPlayerName_FromRegistry(char* name, u32 const name_size)
226230
{
227231
string256 new_name;
232+
#if defined(LINUX)
233+
uid_t uid = geteuid();
234+
struct passwd *pw = getpwuid(uid);
235+
if(pw)
236+
{
237+
strcpy(name, pw->pw_gecos);
238+
char* pos = strchr(name, ','); // pw_gecos return string
239+
if(NULL != pos)
240+
*pos = 0;
241+
if(0 == name[0])
242+
strcpy(name, pw->pw_name);
243+
}
244+
if (0 == name[0])
245+
#else
228246
if (!ReadRegistry_StrValue(REGISTRY_VALUE_USERNAME, name))
247+
#endif
229248
{
230249
name[0] = 0;
231250
Msg("! Player name registry key (%s) not found !", REGISTRY_VALUE_USERNAME);
232251
return;
233252
}
253+
234254
u32 const max_name_length = GP_UNIQUENICK_LEN - 1;
235255
if (xr_strlen(name) > max_name_length)
236256
{

0 commit comments

Comments
 (0)