summaryrefslogtreecommitdiff
path: root/channels.c
diff options
context:
space:
mode:
authordane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-06-18 16:38:43 +0000
committerdane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-06-18 16:38:43 +0000
commit1d1c478e4ff9c484be01ad0d55d5f3c0a91b2561 (patch)
treee2d601a6ee6a167671da595b22be602aaaa6c4a1 /channels.c
parentbb020753879abb7ede7c0343f528027a2b99ebb2 (diff)
BUILD : 1.7.4 (206) BUGS : 55 NOTES : Added proper Bahamut1.8 support. Merged r132:195 from branch branches/proto/anope-bahamut18 which should now be obsolete.
git-svn-id: svn://svn.anope.org/anope/trunk@206 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@148 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'channels.c')
-rw-r--r--channels.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/channels.c b/channels.c
index 61d4c33d1..9e51ba9e6 100644
--- a/channels.c
+++ b/channels.c
@@ -593,8 +593,8 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
BotInfo *bi;
if ((bi = findbot(*av))) {
- send_cmd(bi->nick, "MODE %s +%c %s", chan->name, mode,
- bi->nick);
+ send_mode(bi->nick, chan->name, "+%c %s", mode,
+ bi->nick);
continue;
}
}
@@ -1114,6 +1114,29 @@ void do_cmode(const char *source, int ac, char **av)
{
Channel *chan;
ChannelInfo *ci = NULL;
+#ifdef IRC_BAHAMUT
+ int i;
+ char *t;
+
+ /* TSMODE for bahamut - leave this code out to break MODEs. -GD */
+ if (uplink_capab & CAPAB_TSMODE) {
+ for (i = 0; i < strlen(av[1]); i++) {
+ if (!isdigit(av[1][i]))
+ break;
+ }
+ if (av[1][i] == '\0') {
+ /* We have a valid TS field in av[1] now, so we can strip it off */
+ /* After we swap av[0] and av[1] ofcourse to not break stuff! :) */
+ t = av[0];
+ av[0] = av[1];
+ av[1] = t;
+ ac--;
+ av++;
+ } else {
+ alog("TSMODE enabled but MODE has no valid TS");
+ }
+ }
+#endif
chan = findchan(av[0]);
if (!chan) {
@@ -1183,7 +1206,7 @@ static void add_ban(Channel * chan, char *mask)
snprintf(botmask, sizeof(botmask), "%s!%s@%s", bi->nick, bi->user,
bi->host);
if (match_wild_nocase(mask, botmask)) {
- send_cmd(bi->nick, "MODE %s -b %s", chan->name, mask);
+ send_mode(bi->nick, chan->name, "-b %s", mask);
return;
}
}
@@ -1597,7 +1620,7 @@ void do_mass_mode(char *modes)
if (c->bouncy_modes) {
return;
} else {
- send_cmd(s_OperServ, "MODE %s %s", c->name, modes);
+ send_mode(s_OperServ, c->name, "%s", modes);
chan_set_modes(s_OperServ, c, ac, av, 1);
}
}