mirror of
https://github.com/anope/anope.git
synced 2026-06-30 17:26:39 +02:00
Rewrote the config reader to better handle invalid configs.
This prevents Anope from exploding when /os reload has errors.
This commit is contained in:
@@ -55,7 +55,7 @@ class CommandCSSetMLock : public Command
|
||||
if ((cm = ModeManager::FindChannelModeByChar(*ch)))
|
||||
{
|
||||
if (cm->Type == MODE_STATUS || cm->Type == MODE_LIST || !cm->CanSet(u))
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_SET_MLOCK_IMPOSSIBLE_CHAR, *ch);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_MLOCK_IMPOSSIBLE_CHAR, *ch);
|
||||
else if (add)
|
||||
{
|
||||
ci->RemoveMLock(cm->Name);
|
||||
@@ -81,14 +81,14 @@ class CommandCSSetMLock : public Command
|
||||
ci->SetMLock(cm->Name, false);
|
||||
}
|
||||
else
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_SET_MLOCK_UNKNOWN_CHAR, *ch);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_MLOCK_UNKNOWN_CHAR, *ch);
|
||||
}
|
||||
|
||||
/* We can't mlock +L if +l is not mlocked as well. */
|
||||
if (ModeManager::FindChannelModeByName(CMODE_REDIRECT) && ci->HasMLock(CMODE_REDIRECT, true) && !ci->HasMLock(CMODE_LIMIT, true))
|
||||
{
|
||||
ci->RemoveMLock(CMODE_REDIRECT);
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_SET_MLOCK_L_REQUIRED);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_MLOCK_L_REQUIRED);
|
||||
}
|
||||
|
||||
/* Some ircd we can't set NOKNOCK without INVITE */
|
||||
@@ -96,14 +96,14 @@ class CommandCSSetMLock : public Command
|
||||
if (ModeManager::FindChannelModeByName(CMODE_NOKNOCK) && ircd->knock_needs_i && ci->HasMLock(CMODE_NOKNOCK, true) && !ci->HasMLock(CMODE_INVITE, true))
|
||||
{
|
||||
ci->RemoveMLock(CMODE_NOKNOCK);
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_SET_MLOCK_K_REQUIRED);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_MLOCK_K_REQUIRED);
|
||||
}
|
||||
|
||||
/* Since we always enforce mode r there is no way to have no
|
||||
* mode lock at all.
|
||||
*/
|
||||
if (!get_mlock_modes(ci, 0).empty())
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_MLOCK_CHANGED, ci->name.c_str(), get_mlock_modes(ci, 0).c_str());
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_MLOCK_CHANGED, ci->name.c_str(), get_mlock_modes(ci, 0).c_str());
|
||||
|
||||
/* Implement the new lock. */
|
||||
if (ci->c)
|
||||
@@ -114,19 +114,19 @@ class CommandCSSetMLock : public Command
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &)
|
||||
{
|
||||
notice_help(Config.s_ChanServ, u, CHAN_HELP_SET_MLOCK, "SET");
|
||||
notice_help(Config->s_ChanServ, u, CHAN_HELP_SET_MLOCK, "SET");
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u, const Anope::string &)
|
||||
{
|
||||
// XXX
|
||||
syntax_error(Config.s_ChanServ, u, "SET", CHAN_SET_SYNTAX);
|
||||
syntax_error(Config->s_ChanServ, u, "SET", CHAN_SET_SYNTAX);
|
||||
}
|
||||
|
||||
void OnServHelp(User *u)
|
||||
{
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_SET_MLOCK);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_SET_MLOCK);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -139,14 +139,14 @@ class CommandCSSASetMLock : public CommandCSSetMLock
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &)
|
||||
{
|
||||
notice_help(Config.s_ChanServ, u, CHAN_HELP_SET_MLOCK, "SASET");
|
||||
notice_help(Config->s_ChanServ, u, CHAN_HELP_SET_MLOCK, "SASET");
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u, const Anope::string &)
|
||||
{
|
||||
// XXX
|
||||
syntax_error(Config.s_ChanServ, u, "SASET", CHAN_SASET_SYNTAX);
|
||||
syntax_error(Config->s_ChanServ, u, "SASET", CHAN_SASET_SYNTAX);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user