summaryrefslogtreecommitdiff
path: root/src/config.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-08-27 12:28:27 -0400
committerAdam <Adam@anope.org>2016-08-27 12:28:27 -0400
commitc4ebf02bce968e4846a0be72dfa7b104f21f5166 (patch)
tree2b38b5c06b0136411f7f7ca236fa08108ba84301 /src/config.cpp
parent26e158addf18ff61b99dc70a407b22682e6a421d (diff)
Optionally allow using Boost.Locale for hashcomp
Diffstat (limited to 'src/config.cpp')
-rw-r--r--src/config.cpp24
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)