You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-13 13:31:48 +00:00
Merge pull request #48924 from akien-mga/3.x-cherrypicks
Cherry-picks for the 3.x branch (future 3.4) - 4th batch
This commit is contained in:
@@ -2238,31 +2238,45 @@ MainLoop *OS_OSX::get_main_loop() const {
|
||||
}
|
||||
|
||||
String OS_OSX::get_config_path() const {
|
||||
// The XDG Base Directory specification technically only applies on Linux/*BSD, but it doesn't hurt to support it on macOS as well.
|
||||
if (has_environment("XDG_CONFIG_HOME")) {
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Application Support");
|
||||
} else {
|
||||
return ".";
|
||||
if (get_environment("XDG_CONFIG_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CONFIG_HOME` is a relative path. Ignoring its value and falling back to `$HOME/Library/Application Support` or `.` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Application Support");
|
||||
}
|
||||
return ".";
|
||||
}
|
||||
|
||||
String OS_OSX::get_data_path() const {
|
||||
// The XDG Base Directory specification technically only applies on Linux/*BSD, but it doesn't hurt to support it on macOS as well.
|
||||
if (has_environment("XDG_DATA_HOME")) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_DATA_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_DATA_HOME` is a relative path. Ignoring its value and falling back to `get_config_path()` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
String OS_OSX::get_cache_path() const {
|
||||
// The XDG Base Directory specification technically only applies on Linux/*BSD, but it doesn't hurt to support it on macOS as well.
|
||||
if (has_environment("XDG_CACHE_HOME")) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Caches");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_CACHE_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `$HOME/Libary/Caches` or `get_config_path()` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Caches");
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
String OS_OSX::get_bundle_resource_dir() const {
|
||||
|
||||
@@ -3316,31 +3316,45 @@ MainLoop *OS_Windows::get_main_loop() const {
|
||||
}
|
||||
|
||||
String OS_Windows::get_config_path() const {
|
||||
if (has_environment("XDG_CONFIG_HOME")) { // unlikely, but after all why not?
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else if (has_environment("APPDATA")) {
|
||||
return get_environment("APPDATA");
|
||||
} else {
|
||||
return ".";
|
||||
// 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_CONFIG_HOME")) {
|
||||
if (get_environment("XDG_CONFIG_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CONFIG_HOME` is a relative path. Ignoring its value and falling back to `%APPDATA%` or `.` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("APPDATA")) {
|
||||
return get_environment("APPDATA");
|
||||
}
|
||||
return ".";
|
||||
}
|
||||
|
||||
String OS_Windows::get_data_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_DATA_HOME")) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_DATA_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_DATA_HOME` is a relative path. Ignoring its value and falling back to `get_config_path()` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
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")) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} else if (has_environment("TEMP")) {
|
||||
return get_environment("TEMP");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_CACHE_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} 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.");
|
||||
}
|
||||
}
|
||||
if (has_environment("TEMP")) {
|
||||
return get_environment("TEMP");
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
// Get properly capitalized engine name for system paths
|
||||
|
||||
@@ -3208,32 +3208,44 @@ bool OS_X11::_check_internal_feature_support(const String &p_feature) {
|
||||
|
||||
String OS_X11::get_config_path() const {
|
||||
if (has_environment("XDG_CONFIG_HOME")) {
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".config");
|
||||
} else {
|
||||
return ".";
|
||||
if (get_environment("XDG_CONFIG_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CONFIG_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.config` or `.` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".config");
|
||||
}
|
||||
return ".";
|
||||
}
|
||||
|
||||
String OS_X11::get_data_path() const {
|
||||
if (has_environment("XDG_DATA_HOME")) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".local/share");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_DATA_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_DATA_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.local/share` or `get_config_path()` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".local/share");
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
String OS_X11::get_cache_path() const {
|
||||
if (has_environment("XDG_CACHE_HOME")) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".cache");
|
||||
} else {
|
||||
return get_config_path();
|
||||
if (get_environment("XDG_CACHE_HOME").is_abs_path()) {
|
||||
return get_environment("XDG_CACHE_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.cache` or `get_config_path()` per the XDG Base Directory specification.");
|
||||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".cache");
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
||||
String OS_X11::get_system_dir(SystemDir p_dir) const {
|
||||
|
||||
Reference in New Issue
Block a user