Skip to content

Commit

Permalink
Merge pull request #48922 from akien-mga/os-xdg-dedup-code
Browse files Browse the repository at this point in the history
OS: Remove code duplicate in XDG paths handling
  • Loading branch information
akien-mga authored May 21, 2021
2 parents 31bd2cc + 0e1d45b commit 2687ac2
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 25 deletions.
24 changes: 10 additions & 14 deletions platform/osx/os_osx.mm
Original file line number Diff line number Diff line change
Expand Up @@ -188,49 +188,45 @@ virtual void log_error(const char *p_function, const char *p_file, int p_line, c
}

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 Windows as well.
// 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")) {
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.");
return has_environment("HOME") ? get_environment("HOME").plus_file("Library/Application Support") : ".";
}
} else if (has_environment("HOME")) {
}
if (has_environment("HOME")) {
return get_environment("HOME").plus_file("Library/Application Support");
} else {
return ".";
}
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 Windows as well.
// 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")) {
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();
}
} else {
return get_config_path();
}
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 Windows as well.
// 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")) {
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.");
return has_environment("HOME") ? get_environment("HOME").plus_file("Library/Caches") : get_config_path();
}
} else if (has_environment("HOME")) {
}
if (has_environment("HOME")) {
return get_environment("HOME").plus_file("Library/Caches");
} else {
return get_config_path();
}
return get_config_path();
}

String OS_OSX::get_bundle_resource_dir() const {
Expand Down
18 changes: 7 additions & 11 deletions platform/windows/os_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -637,13 +637,12 @@ String OS_Windows::get_config_path() const {
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.");
return has_environment("APPDATA") ? get_environment("APPDATA") : ".";
}
} else if (has_environment("APPDATA")) {
}
if (has_environment("APPDATA")) {
return get_environment("APPDATA");
} else {
return ".";
}
return ".";
}

String OS_Windows::get_data_path() const {
Expand All @@ -653,11 +652,9 @@ String OS_Windows::get_data_path() const {
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();
}
} else {
return get_config_path();
}
return get_config_path();
}

String OS_Windows::get_cache_path() const {
Expand All @@ -667,13 +664,12 @@ String OS_Windows::get_cache_path() const {
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.");
return has_environment("TEMP") ? get_environment("TEMP") : get_config_path();
}
} else if (has_environment("TEMP")) {
}
if (has_environment("TEMP")) {
return get_environment("TEMP");
} else {
return get_config_path();
}
return get_config_path();
}

// Get properly capitalized engine name for system paths
Expand Down

0 comments on commit 2687ac2

Please sign in to comment.