diff options
author | Adam <Adam@anope.org> | 2016-08-27 12:28:27 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2016-08-27 12:28:27 -0400 |
commit | c4ebf02bce968e4846a0be72dfa7b104f21f5166 (patch) | |
tree | 2b38b5c06b0136411f7f7ca236fa08108ba84301 /src/config.cpp | |
parent | 26e158addf18ff61b99dc70a407b22682e6a421d (diff) |
Optionally allow using Boost.Locale for hashcomp
Diffstat (limited to 'src/config.cpp')
-rw-r--r-- | src/config.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/config.cpp b/src/config.cpp index dbeb98f89..6d9cef04d 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -178,6 +178,7 @@ Conf::Conf() : Block("") {"networkinfo", "userlen"}, {"networkinfo", "hostlen"}, {"networkinfo", "chanlen"}, + {"options", "casemap"}, }; for (unsigned i = 0; i < sizeof(noreload) / sizeof(noreload[0]); ++i) @@ -223,6 +224,27 @@ Conf::Conf() : Block("") this->TimeoutCheck = options->Get<time_t>("timeoutcheck"); this->NickChars = networkinfo->Get<Anope::string>("nick_chars"); + Anope::string locale = options->Get<Anope::string>("locale"); + Anope::string casemap = options->Get<Anope::string>("casemap"); + + if (locale.empty() == casemap.empty()) + throw ConfigException("One of options:locale and options:casemap must be set"); + + if (locale.empty()) + { + // load locale conf + File f(casemap + ".conf", false); + this->LoadConf(f); + } + else + { +#if Boost_FOUND + this->locale = new std::locale(Anope::locale::generate(locale.str())); +#else + throw ConfigException("Boost.Locale is not enabled, cannot use locale " + locale); +#endif + } + for (int i = 0; i < this->CountBlock("uplink"); ++i) { Block *uplink = this->GetBlock("uplink", i); @@ -599,6 +621,8 @@ Conf::~Conf() { for (unsigned i = 0; i < MyOperTypes.size(); ++i) delete MyOperTypes[i]; + + delete locale; } void Conf::Post(Conf *old) |