diff options
| author | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-06 03:31:37 +0000 |
|---|---|---|
| committer | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-06 03:31:37 +0000 |
| commit | a2e4eeb6669b6b35954d3fbdaf6c814c719345b4 (patch) | |
| tree | 38bddce33efb6d919029a34b2156c62f5b8c2912 /src/chanserv.c | |
| parent | f150f55ef0e7d4a26d4879faacccd18d27b5b258 (diff) | |
BUILD : 1.7.5 (371) BUGS : 175? NOTES : Fixed some ircd protcol mistakes, clean up clear modes, also a patch form DrStein
git-svn-id: svn://svn.anope.org/anope/trunk@371 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@241 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/chanserv.c')
| -rw-r--r-- | src/chanserv.c | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/src/chanserv.c b/src/chanserv.c index 0be9cb809..731e5262c 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -5726,16 +5726,40 @@ static int do_clear(User * u) char *argv[2]; if (c->mode) { - /* Clear modes */ + /* Clear modes the bulk of the modes */ anope_cmd_mode(s_ChanServ, c->name, "%s %s", - ircd->modestoremove, c->key ? c->key : ""); + ircd->modestoremove); argv[0] = sstrdup(ircd->modestoremove); - argv[1] = c->key ? c->key : NULL; - chan_set_modes(s_OperServ, c, c->key ? 2 : 1, argv, 0); + chan_set_modes(s_ChanServ, c, 1, argv, 0); free(argv[0]); - check_modes(c); + + /* to prevent the internals from complaining send -k, -L, -f by themselves if we need + to send them - TSL */ + if (c->key) { + anope_cmd_mode(s_ChanServ, c->name, "-k %s", c->key); + argv[0] = sstrdup("-k"); + argv[1] = c->key; + chan_set_modes(s_ChanServ, c, 2, argv, 0); + free(argv[0]); + } + if (ircd->Lmode && c->redirect) { + anope_cmd_mode(s_ChanServ, c->name, "-L %s", c->redirect); + argv[0] = sstrdup("-L"); + argv[1] = c->redirect; + chan_set_modes(s_ChanServ, c, 2, argv, 0); + free(argv[0]); + } + if (ircd->fmode && c->flood) { + anope_cmd_mode(s_ChanServ, c->name, "-f %s", c->flood); + argv[0] = sstrdup("-f"); + argv[1] = c->flood; + chan_set_modes(s_ChanServ, c, 2, argv, 0); + free(argv[0]); + } } + + /* TODO: decide if the above implementation is better than this one. */ if (0) { @@ -6152,7 +6176,7 @@ static int do_status(User * u) chan = strtok(NULL, " "); nick = strtok(NULL, " "); if (!nick || strtok(NULL, " ")) { - notice_user(s_ChanServ, u, "STATUS ERROR Syntax error"); + notice_lang(s_ChanServ, u, CHAN_STATUS_SYNTAX); return MOD_CONT; } if (!(ci = cs_findchan(chan))) { @@ -6162,18 +6186,15 @@ static int do_status(User * u) ci = cs_findchan(chan); } if (!ci) { - notice_user(s_ChanServ, u, - "STATUS ERROR Channel %s not registered", chan); + notice_lang(s_ChanServ, u, CHAN_STATUS_NOT_REGGED, chan); } else if (ci->flags & CI_VERBOTEN) { - notice_user(s_ChanServ, u, "STATUS ERROR Channel %s forbidden", - chan); + notice_lang(s_ChanServ, u, CHAN_STATUS_FORBIDDEN, chan); return MOD_CONT; } else if ((u2 = finduser(nick)) != NULL) { - notice_user(s_ChanServ, u, "STATUS %s %s %d", chan, nick, + notice_lang(s_ChanServ, u, CHAN_STATUS_INFO, chan, nick, get_access(u2, ci)); } else { /* !u2 */ - notice_user(s_ChanServ, u, "STATUS ERROR Nick %s not online", - nick); + notice_lang(s_ChanServ, u, CHAN_STATUS_NOTONLINE, nick); } return MOD_CONT; } |
