Browse Source

Merge pull request #6093

3da7849 [squashme] simplify SetupEnvironment() (by dexX7) (Jonas Schnelli)
b3ffcdf don't imbue boost::filesystem::path with locale "C" on windows (Jonas Schnelli)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
23254131a3
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 8
      src/util.cpp

8
src/util.cpp

@ -726,18 +726,20 @@ void RenameThread(const char* name)
void SetupEnvironment() void SetupEnvironment()
{ {
std::locale loc("C");
// On most POSIX systems (e.g. Linux, but not BSD) the environment's locale // On most POSIX systems (e.g. Linux, but not BSD) the environment's locale
// may be invalid, in which case the "C" locale is used as fallback. // may be invalid, in which case the "C" locale is used as fallback.
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__) #if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
try { try {
loc = std::locale(""); // Raises a runtime error if current locale is invalid std::locale(""); // Raises a runtime error if current locale is invalid
} catch (const std::runtime_error&) { } catch (const std::runtime_error&) {
setenv("LC_ALL", "C", 1); setenv("LC_ALL", "C", 1);
} }
#endif #endif
// The path locale is lazy initialized and to avoid deinitialization errors // The path locale is lazy initialized and to avoid deinitialization errors
// in multithreading environments, it is set explicitly by the main thread. // in multithreading environments, it is set explicitly by the main thread.
// A dummy locale is used to extract the internal default locale, used by
// boost::filesystem::path, which is then used to explicitly imbue the path.
std::locale loc = boost::filesystem::path::imbue(std::locale::classic());
boost::filesystem::path::imbue(loc); boost::filesystem::path::imbue(loc);
} }

Loading…
Cancel
Save