diff --git a/src/common/impl/FFPlatform_unix.c b/src/common/impl/FFPlatform_unix.c index 5d6ac07b3..3ca836fb6 100644 --- a/src/common/impl/FFPlatform_unix.c +++ b/src/common/impl/FFPlatform_unix.c @@ -177,17 +177,16 @@ static void getDataDirs(FFPlatform* platform) static void getUserName(FFPlatform* platform, const struct passwd* pwd) { - const char* user = getenv("USER"); - if(!ffStrSet(user) && pwd) - user = pwd->pw_name; - - ffStrbufAppendS(&platform->userName, user); - if (pwd) { - ffStrbufAppendS(&platform->fullUserName, pwd->pw_gecos); + ffStrbufSetS(&platform->userName, pwd->pw_name); + ffStrbufSetS(&platform->fullUserName, pwd->pw_gecos); ffStrbufTrimSpace(&platform->fullUserName); } + else + { + ffStrbufSetS(&platform->userName, getenv("USER")); + } } static void getHostName(FFPlatform* platform, const struct utsname* uts) diff --git a/src/common/impl/FFPlatform_windows.c b/src/common/impl/FFPlatform_windows.c index 022a39e35..58c6e8de1 100644 --- a/src/common/impl/FFPlatform_windows.c +++ b/src/common/impl/FFPlatform_windows.c @@ -138,40 +138,37 @@ static void getDataDirs(FFPlatform* platform) static void getUserName(FFPlatform* platform) { - const char* userName = getenv("USERNAME"); - if (ffStrSet(userName)) - ffStrbufSetS(&platform->userName, userName); - else - { - wchar_t buffer[256]; - DWORD len = ARRAY_SIZE(buffer); - if(GetUserNameW(buffer, &len)) - ffStrbufSetWS(&platform->userName, buffer); - } - wchar_t buffer[256]; DWORD size = ARRAY_SIZE(buffer); if (GetUserNameExW(NameDisplay, buffer, &size)) ffStrbufSetWS(&platform->fullUserName, buffer); - size = 0; - DWORD refDomainSize = 0; - SID_NAME_USE sidNameUse = SidTypeUnknown; - LookupAccountNameA(NULL, userName, NULL, &size, NULL, &refDomainSize, &sidNameUse); - if (size > 0) + size = ARRAY_SIZE(buffer); + if (GetUserNameW(buffer, &size)) // GetUserNameExW(10002)? { - FF_AUTO_FREE PSID sid = (PSID) malloc(size); - FF_AUTO_FREE char* refDomain = (char*) malloc(refDomainSize); - if (LookupAccountNameA(NULL, userName, sid, &size, refDomain, &refDomainSize, &sidNameUse)) + ffStrbufSetWS(&platform->userName, buffer); + + size = 0; + DWORD refDomainSize = 0; + SID_NAME_USE sidNameUse = SidTypeUnknown; + LookupAccountNameW(NULL, buffer, NULL, &size, NULL, &refDomainSize, &sidNameUse); + if (size > 0) { - LPWSTR sidString; - if (ConvertSidToStringSidW(sid, &sidString)) + FF_AUTO_FREE PSID sid = (PSID) malloc(size); + FF_AUTO_FREE LPWSTR refDomain = (LPWSTR) malloc(refDomainSize); + if (LookupAccountNameW(NULL, buffer, sid, &size, refDomain, &refDomainSize, &sidNameUse)) { - ffStrbufSetWS(&platform->sid, sidString); - LocalFree(sidString); + LPWSTR sidString; + if (ConvertSidToStringSidW(sid, &sidString)) + { + ffStrbufSetWS(&platform->sid, sidString); + LocalFree(sidString); + } } } } + else + ffStrbufSetS(&platform->userName, getenv("USERNAME")); } static void getHostName(FFPlatform* platform)