aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2015-09-08 23:57:28 +0200
committerest31 <MTest31@outlook.com>2015-09-10 08:32:58 +0200
commit2a9da62b21b5c509496b8fd427f29dd650035fe6 (patch)
tree39943b8d17a21c26feb73be138c6f0102db041d1
parent183d0d5633b94bfa831528cb637fdb29342676d4 (diff)
downloadminetest-2a9da62b21b5c509496b8fd427f29dd650035fe6.tar.gz
minetest-2a9da62b21b5c509496b8fd427f29dd650035fe6.tar.bz2
minetest-2a9da62b21b5c509496b8fd427f29dd650035fe6.zip
Improve locale directory detection
Use in-place locale directory if that exists, and static one (RUN_IN_PLACE or CUSTOM_LOCALEDIR) doesn't exist. Report to errorstream if neither static nor in-place locale dirs exist, and report successfully found paths to infostreem. Fixes two bugs: -> Regression of commit [1] where if we use RUN_IN_PLACE=false, but don't make install, locales aren't found. One might think this is no regression, as its no bug, but all other paths (mainmenu, etc.) are detected properly. -> Regression of commit [1] where locales don't work on windows. References: [1]: Commit 645e2086734e3d2d1ec95f50faa39f0f24304761 "Use CUSTOM_LOCALEDIR if specified" by @ShadowNinja
-rw-r--r--src/porting.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/porting.cpp b/src/porting.cpp
index 5fea1d9cf..d0dfc801f 100644
--- a/src/porting.cpp
+++ b/src/porting.cpp
@@ -512,14 +512,35 @@ void initializePaths()
errorstream << "Failed to get one or more system-wide path" << std::endl;
#endif
+
+ infostream << "Detected share path: " << path_share << std::endl;
+ infostream << "Detected user path: " << path_user << std::endl;
+
+ bool found_localedir = false;
#ifdef STATIC_LOCALEDIR
- path_locale = STATIC_LOCALEDIR[0] ? STATIC_LOCALEDIR : getDataPath("locale");
+ if (STATIC_LOCALEDIR[0] && fs::PathExists(STATIC_LOCALEDIR)) {
+ found_localedir = true;
+ path_locale = STATIC_LOCALEDIR;
+ infostream << "Using locale directory " << STATIC_LOCALEDIR << std::endl;
+ } else {
+ path_locale = getDataPath("locale");
+ if (fs::PathExists(path_locale)) {
+ found_localedir = true;
+ infostream << "Using in-place locale directory " << path_locale
+ << " even though a static one was provided "
+ << "(RUN_IN_PLACE or CUSTOM_LOCALEDIR)." << std::endl;
+ }
+ }
#else
path_locale = getDataPath("locale");
+ if (fs::PathExists(path_locale)) {
+ found_localedir = true;
+ }
#endif
+ if (!found_localedir) {
+ errorstream << "Couldn't find a locale directory!" << std::endl;
+ }
- infostream << "Detected share path: " << path_share << std::endl;
- infostream << "Detected user path: " << path_user << std::endl;
}