Implement get_cache_path() for iOS, and improve it for Android and Windows

This commit is contained in:
Pedro J. Estébanez
2021-02-22 22:54:12 +01:00
parent 58aa020a19
commit 007cb5ccfb
7 changed files with 41 additions and 18 deletions

View File

@ -677,18 +677,27 @@ String OS_Windows::get_data_path() const {
}
String OS_Windows::get_cache_path() const {
// The XDG Base Directory specification technically only applies on Linux/*BSD, but it doesn't hurt to support it on Windows as well.
if (has_environment("XDG_CACHE_HOME")) {
if (get_environment("XDG_CACHE_HOME").is_absolute_path()) {
return get_environment("XDG_CACHE_HOME").replace("\\", "/");
} else {
WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `%TEMP%` or `get_config_path()` per the XDG Base Directory specification.");
static String cache_path_cache;
if (cache_path_cache.is_empty()) {
// The XDG Base Directory specification technically only applies on Linux/*BSD, but it doesn't hurt to support it on Windows as well.
if (has_environment("XDG_CACHE_HOME")) {
if (get_environment("XDG_CACHE_HOME").is_absolute_path()) {
cache_path_cache = get_environment("XDG_CACHE_HOME").replace("\\", "/");
} else {
WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `%LOCALAPPDATA%\\cache`, `%TEMP%` or `get_config_path()` per the XDG Base Directory specification.");
}
}
if (cache_path_cache.is_empty() && has_environment("LOCALAPPDATA")) {
cache_path_cache = get_environment("LOCALAPPDATA").replace("\\", "/");
}
if (cache_path_cache.is_empty() && has_environment("TEMP")) {
cache_path_cache = get_environment("TEMP").replace("\\", "/");
}
if (cache_path_cache.is_empty()) {
cache_path_cache = get_config_path();
}
}
if (has_environment("TEMP")) {
return get_environment("TEMP").replace("\\", "/");
}
return get_config_path();
return cache_path_cache;
}
// Get properly capitalized engine name for system paths