diff options
author | est31 <MTest31@outlook.com> | 2015-09-08 23:57:28 +0200 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2015-09-10 08:32:58 +0200 |
commit | 2a9da62b21b5c509496b8fd427f29dd650035fe6 (patch) | |
tree | 39943b8d17a21c26feb73be138c6f0102db041d1 /src | |
parent | 183d0d5633b94bfa831528cb637fdb29342676d4 (diff) | |
download | minetest-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
Diffstat (limited to 'src')
-rw-r--r-- | src/porting.cpp | 27 |
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; } |