struct Membership *member;
int parc;
char **parv;
- unsigned int flags;
- unsigned int dir;
- unsigned int done;
- unsigned int add;
- unsigned int del;
+ ulong64 flags;
+ ulong64 dir;
+ ulong64 done;
+ ulong64 add;
+ ulong64 del;
int args_used;
int max_args;
int numbans;
struct Ban banlist[MAXPARA];
struct {
- unsigned int flag;
+ ulong64 flag;
unsigned short oplevel;
struct Client *client;
} cli_change[MAXPARA];
sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "mode +u set.");
}
}
- state->add |= flag_p[0];
- state->del &= ~flag_p[0];
} else {
for(member = state->chptr->members; member; member = member->next_member) {
if(!IsChanOp(member) && !HasVoice(member)) {
sendcmdto_channel_butserv_butone(member->user, CMD_JOIN, member->channel, member->user, SKIP_OPS, ":%H", member->channel);
}
}
- state->del |= flag_p[0];
- state->add &= ~flag_p[0];
}
}
modebuf_mode_client(state->mbuf, state->cli_change[i].flag,
state->cli_change[i].client,
state->cli_change[i].oplevel);
+
+ if(MyUser(state->sptr) && (state->chptr->mode.mode & MODE_AUDITORIUM) && (state->cli_change[i].flag & MODE_CHANOP)) {
+ do_names(state->sptr, state->chptr, NAMES_ALL|NAMES_EON|((member->status & MODE_CHANOP) ? 0 : NAMES_OPS));
+ }
} /* for (i = 0; state->cli_change[i].flags; i++) */
}
break;
case 'u': /* deal with not oped members */
audit_chan_users(&state, flag_p);
+ mode_parse_mode(&state, flag_p);
break;
case 'a': /* deal with limits */
mode_parse_access(&state, flag_p);