瀏覽代碼

OS: Remove code duplicate in XDG paths handling

Follow-up to #48542.
Rémi Verschelde 4 年之前
父節點
當前提交
0e1d45b210
共有 2 個文件被更改,包括 17 次插入25 次删除
  1. 10 14
      platform/osx/os_osx.mm
  2. 7 11
      platform/windows/os_windows.cpp

+ 10 - 14
platform/osx/os_osx.mm

@@ -188,49 +188,45 @@ MainLoop *OS_OSX::get_main_loop() const {
 }
 }
 
 
 String OS_OSX::get_config_path() 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 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 (has_environment("XDG_CONFIG_HOME")) {
 		if (get_environment("XDG_CONFIG_HOME").is_abs_path()) {
 		if (get_environment("XDG_CONFIG_HOME").is_abs_path()) {
 			return get_environment("XDG_CONFIG_HOME");
 			return get_environment("XDG_CONFIG_HOME");
 		} else {
 		} 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.");
 			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");
 		return get_environment("HOME").plus_file("Library/Application Support");
-	} else {
-		return ".";
 	}
 	}
+	return ".";
 }
 }
 
 
 String OS_OSX::get_data_path() const {
 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 (has_environment("XDG_DATA_HOME")) {
 		if (get_environment("XDG_DATA_HOME").is_abs_path()) {
 		if (get_environment("XDG_DATA_HOME").is_abs_path()) {
 			return get_environment("XDG_DATA_HOME");
 			return get_environment("XDG_DATA_HOME");
 		} else {
 		} 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.");
 			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 {
 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 (has_environment("XDG_CACHE_HOME")) {
 		if (get_environment("XDG_CACHE_HOME").is_abs_path()) {
 		if (get_environment("XDG_CACHE_HOME").is_abs_path()) {
 			return get_environment("XDG_CACHE_HOME");
 			return get_environment("XDG_CACHE_HOME");
 		} else {
 		} 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.");
 			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");
 		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 {
 String OS_OSX::get_bundle_resource_dir() const {

+ 7 - 11
platform/windows/os_windows.cpp

@@ -637,13 +637,12 @@ String OS_Windows::get_config_path() const {
 			return get_environment("XDG_CONFIG_HOME");
 			return get_environment("XDG_CONFIG_HOME");
 		} else {
 		} 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.");
 			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");
 		return get_environment("APPDATA");
-	} else {
-		return ".";
 	}
 	}
+	return ".";
 }
 }
 
 
 String OS_Windows::get_data_path() const {
 String OS_Windows::get_data_path() const {
@@ -653,11 +652,9 @@ String OS_Windows::get_data_path() const {
 			return get_environment("XDG_DATA_HOME");
 			return get_environment("XDG_DATA_HOME");
 		} else {
 		} 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.");
 			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 {
 String OS_Windows::get_cache_path() const {
@@ -667,13 +664,12 @@ String OS_Windows::get_cache_path() const {
 			return get_environment("XDG_CACHE_HOME");
 			return get_environment("XDG_CACHE_HOME");
 		} else {
 		} 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.");
 			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");
 		return get_environment("TEMP");
-	} else {
-		return get_config_path();
 	}
 	}
+	return get_config_path();
 }
 }
 
 
 // Get properly capitalized engine name for system paths
 // Get properly capitalized engine name for system paths