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
This commit is contained in:
abraunegg 2020-02-03 09:10:57 +11:00 committed by GitHub
parent 14cd47b56f
commit 2321518faa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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";
}
}