diff options
author | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-11-12 05:37:12 +0000 |
---|---|---|
committer | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-11-12 05:37:12 +0000 |
commit | f0c53b4727bf64c280b49cb7c15c6ba77c6b1dc5 (patch) | |
tree | 4f48274e4da6d8090a906b933f6222375e1b0fce /src/operserv.c | |
parent | c58d37f49dfc674920ae2ccd93d6fd32df68544d (diff) |
BUILD : 1.7.6 (440) BUGS : 211 NOTES : 1. Updated PTLink support, 2. OperServ takes +q/+a on CLEARMODES, 3. fixed a segfault in do_match_wild() reported by DJ
git-svn-id: svn://svn.anope.org/anope/trunk@440 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@295 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/operserv.c')
-rw-r--r-- | src/operserv.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/operserv.c b/src/operserv.c index d17e06216..04ecde303 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -1678,6 +1678,46 @@ static int do_clearmodes(User * u) free(argv[0]); } } + + /* Clear mode Owners */ + if (ircd->owner) { + for (cu = c->users; cu; cu = next) { + next = cu->next; + + if (!chan_has_user_status(c, cu->user, CUS_OWNER)) + continue; + + argv[0] = sstrdup(ircd->ownerunset); + argv[1] = sstrdup(cu->user->nick); + + anope_cmd_mode(s_OperServ, c->name, "%s %s", + ircd->ownerunset, cu->user->nick); + chan_set_modes(s_OperServ, c, 2, argv, 0); + + free(argv[0]); + } + } + + /* Clear mode protected or admins */ + if (ircd->protect || ircd->admin) { + for (cu = c->users; cu; cu = next) { + next = cu->next; + + if (!chan_has_user_status(c, cu->user, CUS_PROTECT)) + continue; + + argv[0] = sstrdup("-a"); + argv[1] = sstrdup(cu->user->nick); + + anope_cmd_mode(s_OperServ, c->name, "-a %s", + cu->user->nick); + chan_set_modes(s_OperServ, c, 2, argv, 0); + + free(argv[0]); + } + } + + } if (c->mode) { |