summaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp22
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