From 2321518faa23c4f9203136327edc3a804432517a Mon Sep 17 00:00:00 2001 From: abraunegg Date: Mon, 3 Feb 2020 09:10:57 +1100 Subject: [PATCH] Update how the 'username' is determined from the running process for logfile naming (Issue #786) (#787) * Fix an issue where the 'username' for the running process is not correctly determined on some platforms when enabling logging via --enable-logging --- src/log.d | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/log.d b/src/log.d index cbcc27be..fcbcf1f3 100644 --- a/src/log.d +++ b/src/log.d @@ -179,11 +179,25 @@ private void logfileWriteLine(T...)(T args) private string getUserName() { auto pw = getpwuid(getuid); - auto uinfo = pw.pw_gecos[0 .. strlen(pw.pw_gecos)].splitter(','); - if (!uinfo.empty && uinfo.front.length){ - return uinfo.front.idup; + + // get required details + auto runtime_pw_name = pw.pw_name[0 .. strlen(pw.pw_name)].splitter(','); + auto runtime_pw_uid = pw.pw_uid; + auto runtime_pw_gid = pw.pw_gid; + + // user identifiers from process + vdebug("Process ID: ", pw); + vdebug("User UID: ", runtime_pw_uid); + vdebug("User GID: ", runtime_pw_gid); + + // What should be returned as username? + if (!runtime_pw_name.empty && runtime_pw_name.front.length){ + // user resolved + vdebug("User Name: ", runtime_pw_name.front.idup); + return runtime_pw_name.front.idup; } else { // Unknown user? + vdebug("User Name: unknown"); return "unknown"; } }