const unsigned char * lowermap_rememberer;
public:
- ModuleNationalChars() : rememberer(ServerInstance->IsNick)
+ ModuleNationalChars()
+ : rememberer(ServerInstance->IsNick), lowermap_rememberer(national_case_insensitive_map)
+ {
+ }
+
+ void init()
{
- lowermap_rememberer = national_case_insensitive_map;
memcpy(m_lower, rfc_case_insensitive_map, 256);
national_case_insensitive_map = m_lower;
ServerInstance->IsNick = &myhandler;
Implementation eventlist[] = { I_OnRehash, I_On005Numeric };
- ServerInstance->Modules->Attach(eventlist, this, 2);
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
OnRehash(NULL);
}
virtual void OnRehash(User* user)
{
- ConfigReader conf;
- charset = conf.ReadValue("nationalchars", "file", 0);
- casemapping = conf.ReadValue("nationalchars", "casemapping", charset, 0, false);
+ ConfigTag* tag = ServerInstance->Config->ConfValue("nationalchars");
+ charset = tag->getString("file");
+ casemapping = tag->getString("casemapping", charset);
if(charset[0] != '/')
charset.insert(0, "../locales/");
unsigned char * tables[8] = { m_additional, m_additionalMB, m_additionalUp, m_lower, m_upper, m_additionalUtf8, m_additionalUtf8range, m_additionalUtf8interval };
loadtables(charset, tables, 8, 5);
- forcequit = conf.ReadFlag("nationalchars", "forcequit", 0);
+ forcequit = tag->getBool("forcequit");
CheckForceQuit("National character set changed");
}
if (!forcequit)
return;
- for (std::vector<LocalUser*>::iterator iter = ServerInstance->Users->local_users.begin(); iter != ServerInstance->Users->local_users.end(); ++iter)
+ for (LocalUserList::const_iterator iter = ServerInstance->Users->local_users.begin(); iter != ServerInstance->Users->local_users.end(); ++iter)
{
/* Fix by Brain: Dont quit UID users */
User* n = *iter;