diff options
Diffstat (limited to 'src/porting.cpp')
-rw-r--r-- | src/porting.cpp | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/src/porting.cpp b/src/porting.cpp index 09627431c..f8bd74f9a 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -422,11 +422,18 @@ bool setSystemPaths() path_share += DIR_DELIM ".."; } - // Use "C:\Users\<user>\AppData\Roaming\<PROJECT_NAME_C>" - DWORD len = GetEnvironmentVariable("APPDATA", buf, sizeof(buf)); - FATAL_ERROR_IF(len == 0 || len > sizeof(buf), "Failed to get APPDATA"); + // Use %MINETEST_USER_PATH% + DWORD len = GetEnvironmentVariable("MINETEST_USER_PATH", buf, sizeof(buf)); + FATAL_ERROR_IF(len > sizeof(buf), "Failed to get MINETEST_USER_PATH (too large for buffer)"); + if (len == 0) { + // Use "C:\Users\<user>\AppData\Roaming\<PROJECT_NAME_C>" + len = GetEnvironmentVariable("APPDATA", buf, sizeof(buf)); + FATAL_ERROR_IF(len == 0 || len > sizeof(buf), "Failed to get APPDATA"); + path_user = std::string(buf) + DIR_DELIM + PROJECT_NAME_C; + } else { + path_user = std::string(buf); + } - path_user = std::string(buf) + DIR_DELIM + PROJECT_NAME_C; return true; } @@ -486,8 +493,13 @@ bool setSystemPaths() } #ifndef __ANDROID__ - path_user = std::string(getHomeOrFail()) + DIR_DELIM "." - + PROJECT_NAME; + const char *const minetest_user_path = getenv("MINETEST_USER_PATH"); + if (minetest_user_path && minetest_user_path[0] != '\0') { + path_user = std::string(minetest_user_path); + } else { + path_user = std::string(getHomeOrFail()) + DIR_DELIM "." + + PROJECT_NAME; + } #endif return true; @@ -510,9 +522,14 @@ bool setSystemPaths() } CFRelease(resources_url); - path_user = std::string(getHomeOrFail()) - + "/Library/Application Support/" - + PROJECT_NAME; + const char *const minetest_user_path = getenv("MINETEST_USER_PATH"); + if (minetest_user_path && minetest_user_path[0] != '\0') { + path_user = std::string(minetest_user_path); + } else { + path_user = std::string(getHomeOrFail()) + + "/Library/Application Support/" + + PROJECT_NAME; + } return true; } @@ -522,8 +539,13 @@ bool setSystemPaths() bool setSystemPaths() { path_share = STATIC_SHAREDIR; - path_user = std::string(getHomeOrFail()) + DIR_DELIM "." - + lowercase(PROJECT_NAME); + const char *const minetest_user_path = getenv("MINETEST_USER_PATH"); + if (minetest_user_path && minetest_user_path[0] != '\0') { + path_user = std::string(minetest_user_path); + } else { + path_user = std::string(getHomeOrFail()) + DIR_DELIM "." + + lowercase(PROJECT_NAME); + } return true; } |