diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-11-26 18:04:47 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-11-26 18:04:47 +0000 |
commit | 2e52ff280dca14d1598b84fab7a8c2e93fa30910 (patch) | |
tree | b61c54d4e0921b6349ff6b5aeb36008e52973076 /src/channels.cpp | |
parent | 69488d0a42ae22d1cf39244100403b63075ad4c3 (diff) |
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list, a list of users NOT to write to. By default it just contains the sender, you can add more.
This also bumps the module api version by one. added "CUList fixme" to peaveys module just so it builds, as this will be refactored to use the new feature that was just added :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5806 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/channels.cpp')
-rw-r--r-- | src/channels.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/channels.cpp b/src/channels.cpp index 948b49a0b..7a6f85469 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -695,7 +695,22 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status this->WriteAllExceptSender(user, serversource, status, std::string(textbuffer)); } -void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status, const std::string& text) +void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, char* text, ...) +{ + char textbuffer[MAXBUF]; + va_list argsPtr; + + if (!text) + return; + + va_start(argsPtr, text); + vsnprintf(textbuffer, MAXBUF, text, argsPtr); + va_end(argsPtr); + + this->WriteAllExcept(user, serversource, status, except_list, std::string(textbuffer)); +} + +void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, const std::string &text) { CUList *ulist; @@ -717,7 +732,7 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { - if ((IS_LOCAL(i->second)) && (user != i->second)) + if ((IS_LOCAL(i->second)) && (except_list.find(i->second) == except_list.end())) { if (serversource) i->second->WriteServ(text); @@ -727,6 +742,13 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status } } +void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status, const std::string& text) +{ + CUList except_list; + except_list[user] = user; + this->WriteAllExcept(user, serversource, status, except_list, std::string(text)); +} + /* * return a count of the users on a specific channel accounting for * invisible users who won't increase the count. e.g. for /LIST |