diff options
author | Adam <Adam@anope.org> | 2010-10-03 15:59:19 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-10-03 15:59:19 -0400 |
commit | 632f8df76b31f1300e7ac72890567834eac5511e (patch) | |
tree | c8566121ac3ab41e7eeaed390be80f5a9ad9bc97 /src/channels.cpp | |
parent | 663a8b9a1c704bec8e15ec1cf21d716df2db00e7 (diff) |
Fixed checking the global block in the config to work ok, fixed having non-core service bots logging messages, fixed setting the topic to the topic setter on inspircd12/20, and fixed logging status mode changes on ts6 ircds
Diffstat (limited to 'src/channels.cpp')
-rw-r--r-- | src/channels.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/channels.cpp b/src/channels.cpp index eca0bdd34..26623c24d 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -833,11 +833,13 @@ void Channel::SetModes(BotInfo *bi, bool EnforceMLock, const char *cmodes, ...) * @param ac Number of args * @param av args */ -void ChanSetInternalModes(Channel *c, int ac, const char **av) +void ChanSetInternalModes(Channel *c, int ac, const char **av, User *setter) { if (!ac) return; + Anope::string modestring; + Anope::string paramstring; int k = 0, j = 0, add = -1; for (unsigned int i = 0, end = strlen(av[0]); i < end; ++i) { @@ -846,9 +848,11 @@ void ChanSetInternalModes(Channel *c, int ac, const char **av) switch (av[0][i]) { case '+': + modestring += '+'; add = 1; continue; case '-': + modestring += '-'; add = 0; continue; default: @@ -857,6 +861,7 @@ void ChanSetInternalModes(Channel *c, int ac, const char **av) cm = ModeManager::FindChannelModeByChar(av[0][i]); if (!cm) continue; + modestring += cm->ModeChar; } if (cm->Type == MODE_REGULAR) @@ -880,6 +885,11 @@ void ChanSetInternalModes(Channel *c, int ac, const char **av) } if (++j < ac) { + User *u = NULL; + if (cm->Type == MODE_STATUS && (u = finduser(av[j]))) + paramstring += " " + u->nick; + else + paramstring += " " + Anope::string(av[j]); if (add) c->SetModeInternal(cm, av[j]); else @@ -889,6 +899,9 @@ void ChanSetInternalModes(Channel *c, int ac, const char **av) Log() << "warning: ChanSetInternalModes() recieved more modes requiring params than params, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j; } + if (setter) + Log(setter, c, "mode") << modestring << paramstring; + if (j + k + 1 < ac) Log() << "warning: ChanSetInternalModes() recieved more params than modes requiring them, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j << " k: " << k; } @@ -1311,9 +1324,6 @@ void do_cmode(const Anope::string &source, int ac, const char **av) --ac; ++av; - User *u = finduser(source); - if (u) - Log(u, c, "mode") << merge_args(ac, av); ChanSetInternalModes(c, ac, av); } |