diff options
Diffstat (limited to 'src/channels.cpp')
-rw-r--r-- | src/channels.cpp | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/src/channels.cpp b/src/channels.cpp index 52e8faca9..c03a69ace 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -721,25 +721,9 @@ void Channel::WriteAllExcept(User* user, bool serversource, char status, CUList void Channel::WriteAllExcept(User* user, bool serversource, char status, CUList &except_list, const std::string &text) { - CUList *ulist; + CUList *ulist = this->GetUsers(); char tb[MAXBUF]; - switch (status) - { - case '@': - ulist = this->GetOppedUsers(); - break; - case '%': - ulist = this->GetHalfoppedUsers(); - break; - case '+': - ulist = this->GetVoicedUsers(); - break; - default: - ulist = this->GetUsers(); - break; - } - snprintf(tb,MAXBUF,":%s %s",user->GetFullHost(),text.c_str()); std::string out = tb; @@ -747,6 +731,10 @@ void Channel::WriteAllExcept(User* user, bool serversource, char status, CUList { if ((IS_LOCAL(i->first)) && (except_list.find(i->first) == except_list.end())) { + /* User doesnt have the status we're after */ + if (status && !strchr(this->GetAllPrefixChars(i->first), status)) + continue; + if (serversource) i->first->WriteServ(text); else |