diff options
| author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-01-10 22:56:03 +0000 |
|---|---|---|
| committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-01-10 22:56:03 +0000 |
| commit | b73210e538038a8dd803c0c250369b8fd3c2b3f7 (patch) | |
| tree | 5e35bc86ca22875321378dd755d32999efdf7bb3 /src/botserv.c | |
| parent | 01d43e7db5514e29460c7952762739cdb7ee4b23 (diff) | |
Rewrote the code that handles and sends kicks
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2746 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/botserv.c')
| -rw-r--r-- | src/botserv.c | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/botserv.c b/src/botserv.c index faf6bf3b8..c3884e463 100644 --- a/src/botserv.c +++ b/src/botserv.c @@ -696,7 +696,6 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...) va_list args; char buf[1024]; const char *fmt; - const char *av[3]; if (!ci || !ci->bi || !ci->c || !u) return; @@ -708,22 +707,15 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...) vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); - av[0] = ci->name.c_str(); - av[1] = u->nick.c_str(); - av[2] = buf; - ircdproto->SendKick(ci->bi, ci->c, u, "%s", av[2]); - do_kick(ci->bi->nick, 3, av); - FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, buf)); + ci->c->Kick(ci->bi, u, "%s", buf); } /*************************************************************************/ /* Makes a simple ban and kicks the target */ -void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, - const char *reason) +void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, const char *reason) { - const char *kav[4]; // seperate as not everything is constified XXX -- w00t char mask[BUFSIZE]; User *u = finduser(nick); @@ -753,35 +745,19 @@ void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, ci->c->SetMode(NULL, CMODE_BAN, mask); - kav[0] = ci->name.c_str(); - kav[1] = nick; - - if (!reason) { - kav[2] = ci->bi->nick.c_str(); - } else { - if (strlen(reason) > 200) - (*const_cast<char **>(&reason))[200] = '\0'; // Unsafe cast -- will review later -- CyberBotX - kav[2] = reason; - } - /* Check if we need to do a signkick or not -GD */ - if ((ci->HasFlag(CI_SIGNKICK) || ci->HasFlag(CI_SIGNKICK_LEVEL)) && !check_access(requester, ci, CA_SIGNKICK)) - ircdproto->SendKick(ci->bi, ci->c, u, "%s (%s)", kav[2], requester->nick.c_str()); + if (ci->HasFlag(CI_SIGNKICK) || ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(requester, ci, CA_SIGNKICK)) + ci->c->Kick(ci->bi, u, "%s (%s)", reason ? reason : ci->bi->nick.c_str(), requester->nick.c_str()); else - ircdproto->SendKick(ci->bi, ci->c, u, "%s", kav[2]); - - do_kick(ci->bi->nick, 3, kav); - FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, kav[2])); + ci->c->Kick(ci->bi, u, "%s", reason ? reason : ci->bi->nick.c_str()); } /*************************************************************************/ /* Makes a kick with a "dynamic" reason ;) */ -void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, - const char *reason) +void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, const char *reason) { - const char *av[3]; User *u = finduser(nick); if (!u || !is_on_chan(ci->c, u)) @@ -798,31 +774,17 @@ void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, if (ci->HasFlag(CI_PEACE) && stricmp(requester->nick.c_str(), nick) && (get_access(u, ci) >= get_access(requester, ci))) return; - av[0] = ci->name.c_str(); - av[1] = nick; - - if (!reason) { - av[2] = ci->bi->nick.c_str(); - } else { - if (strlen(reason) > 200) - (*const_cast<char **>(&reason))[200] = '\0'; // Unsafe cast -- will review later -- CyberBotX - av[2] = reason; - } - - if (ci->HasFlag(CI_SIGNKICK) || ((ci->HasFlag(CI_SIGNKICK_LEVEL)) && !check_access(requester, ci, CA_SIGNKICK))) - ircdproto->SendKick(ci->bi, ci->c, u, "%s (%s)", av[2], requester->nick.c_str()); + if (ci->HasFlag(CI_SIGNKICK) || (ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(requester, ci, CA_SIGNKICK))) + ci->c->Kick(ci->bi, u, "%s (%s)", reason ? reason : ci->bi->nick.c_str(), requester->nick.c_str()); else - ircdproto->SendKick(ci->bi, ci->c, u, "%s", av[2]); - do_kick(ci->bi->nick, 3, av); - FOREACH_MOD(I_OnBotKick, OnBotKick(u, ci, av[2])); + ci->c->Kick(ci->bi, u, "%s", reason ? reason : ci->bi->nick.c_str()); } /*************************************************************************/ /* Makes a mode operation on a channel for a nick */ -void bot_raw_mode(User * requester, ChannelInfo * ci, const char *mode, - char *nick) +void bot_raw_mode(User * requester, ChannelInfo * ci, const char *mode, char *nick) { char buf[BUFSIZE]; User *u; |
