projects
/
ircu2.10.12-pk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added MODE_HALFOP (+h, %)
[ircu2.10.12-pk.git]
/
ircd
/
m_clearmode.c
diff --git
a/ircd/m_clearmode.c
b/ircd/m_clearmode.c
index 4d0f17924ad13922f88ee67d461fa07a7abf21fc..26955743a3b84318bcf8e7456452172cd8a813c3 100644
(file)
--- a/
ircd/m_clearmode.c
+++ b/
ircd/m_clearmode.c
@@
-113,6
+113,7
@@
do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr,
static int flags[] = {
MODE_CHANOP, 'o',
MODE_VOICE, 'v',
static int flags[] = {
MODE_CHANOP, 'o',
MODE_VOICE, 'v',
+ MODE_HALFOP, 'h',
MODE_PRIVATE, 'p',
MODE_SECRET, 's',
MODE_MODERATED, 'm',
MODE_PRIVATE, 'p',
MODE_SECRET, 's',
MODE_MODERATED, 'm',
@@
-193,7
+194,7
@@
do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr,
}
/* Deal with users on the channel */
}
/* Deal with users on the channel */
- if (del_mode & (MODE_BAN | MODE_CHANOP | MODE_VOICE))
+ if (del_mode & (MODE_BAN | MODE_CHANOP | MODE_
HALFOP | MODE_
VOICE))
for (member = chptr->members; member; member = member->next_member) {
if (IsZombie(member)) /* we ignore zombies */
continue;
for (member = chptr->members; member; member = member->next_member) {
if (IsZombie(member)) /* we ignore zombies */
continue;
@@
-206,6
+207,12
@@
do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr,
modebuf_mode_client(&mbuf, MODE_DEL | MODE_CHANOP, member->user, MAXOPLEVEL + 1);
member->status &= ~CHFL_CHANOP;
}
modebuf_mode_client(&mbuf, MODE_DEL | MODE_CHANOP, member->user, MAXOPLEVEL + 1);
member->status &= ~CHFL_CHANOP;
}
+
+ /* Drop halfop */
+ if (IsHalfOp(member) && del_mode & MODE_HALFOP) {
+ modebuf_mode_client(&mbuf, MODE_DEL | MODE_HALFOP, member->user, MAXOPLEVEL + 1);
+ member->status &= ~CHFL_HALFOP;
+ }
/* Drop voice */
if (HasVoice(member) && del_mode & MODE_VOICE) {
/* Drop voice */
if (HasVoice(member) && del_mode & MODE_VOICE) {