From 51b0c43d7610ef106f2728c23647164cde5d402a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 5 Feb 2024 19:59:16 +0800 Subject: [PATCH] Platform (Windows): use %USERNAME% if available --- src/util/platform/FFPlatform_windows.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/util/platform/FFPlatform_windows.c b/src/util/platform/FFPlatform_windows.c index 81e0fd435..9d0fdd55a 100644 --- a/src/util/platform/FFPlatform_windows.c +++ b/src/util/platform/FFPlatform_windows.c @@ -40,8 +40,14 @@ static void getHomeDir(FFPlatform* platform) ffStrbufSetWS(&platform->homeDir, pPath); ffStrbufReplaceAllC(&platform->homeDir, '\\', '/'); ffStrbufEnsureEndsWithC(&platform->homeDir, '/'); + CoTaskMemFree(pPath); + } + else + { + ffStrbufSetS(&platform->homeDir, getenv("USERPROFILE")); + ffStrbufReplaceAllC(&platform->homeDir, '\\', '/'); + ffStrbufEnsureEndsWithC(&platform->homeDir, '/'); } - CoTaskMemFree(pPath); } static void getCacheDir(FFPlatform* platform) @@ -52,13 +58,13 @@ static void getCacheDir(FFPlatform* platform) ffStrbufSetWS(&platform->cacheDir, pPath); ffStrbufReplaceAllC(&platform->cacheDir, '\\', '/'); ffStrbufEnsureEndsWithC(&platform->cacheDir, '/'); + CoTaskMemFree(pPath); } else { ffStrbufAppend(&platform->cacheDir, &platform->homeDir); ffStrbufAppendS(&platform->cacheDir, "AppData/Local/"); } - CoTaskMemFree(pPath); } static void platformPathAddKnownFolder(FFlist* dirs, REFKNOWNFOLDERID folderId) @@ -71,8 +77,8 @@ static void platformPathAddKnownFolder(FFlist* dirs, REFKNOWNFOLDERID folderId) ffStrbufEnsureEndsWithC(&buffer, '/'); if (!ffListContains(dirs, &buffer, (void*) ffStrbufEqual)) ffStrbufInitMove((FFstrbuf*) ffListAdd(dirs), &buffer); + CoTaskMemFree(pPath); } - CoTaskMemFree(pPath); } static void platformPathAddEnvSuffix(FFlist* dirs, const char* env, const char* suffix) @@ -130,10 +136,16 @@ static void getDataDirs(FFPlatform* platform) static void getUserName(FFPlatform* platform) { - wchar_t buffer[128]; - DWORD len = sizeof(buffer) / sizeof(*buffer); - if(GetUserNameW(buffer, &len)) - ffStrbufSetWS(&platform->userName, buffer); + const char* userName = getenv("USERNAME"); + if (ffStrSet(userName)) + ffStrbufSetS(&platform->userName, userName); + else + { + wchar_t buffer[128]; + DWORD len = sizeof(buffer) / sizeof(*buffer); + if(GetUserNameW(buffer, &len)) + ffStrbufSetWS(&platform->userName, buffer); + } } static void getHostName(FFPlatform* platform)