]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add global-routing snomask functions
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 18 Apr 2009 19:51:24 +0000 (19:51 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 18 Apr 2009 19:51:24 +0000 (19:51 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11314 e03df62e-2008-0410-955e-edbf42e46eb7

include/snomasks.h
src/snomasks.cpp

index a8e5c525c79fb885347eecbce2d4f58ff14e2724..e1af1a1099c998484d780e7a2cd657e0b35478dd 100644 (file)
@@ -90,19 +90,33 @@ class CoreExport SnomaskManager : public Extensible
         */
        bool DisableSnomask(char letter);
 
-       /** Write to all users with a given snomask.
+       /** Write to all users with a given snomask (local server only)
         * @param letter The snomask letter to write to
         * @param text The text to send to the users
         */
        void WriteToSnoMask(char letter, const std::string &text);
 
-       /** Write to all users with a given snomask.
+       /** Write to all users with a given snomask (local server only)
         * @param letter The snomask letter to write to
         * @param text A format string containing text to send
         * @param ... Format arguments
         */
        void WriteToSnoMask(char letter, const char* text, ...) CUSTOM_PRINTF(3, 4);
 
+       /** Write to all users with a given snomask (sent globally)
+        * @param letter The snomask letter to write to
+        * @param text The text to send to the users
+        */
+       void WriteGlobalSno(char letter, const std::string &text);
+
+       /** Write to all users with a given snomask (sent globally)
+        * @param letter The snomask letter to write to
+        * @param text A format string containing text to send
+        * @param ... Format arguments
+        */
+       void WriteGlobalSno(char letter, const char* text, ...) CUSTOM_PRINTF(3, 4);
+
+
        /** Called once per 5 seconds from the mainloop, this flushes any cached
         * snotices. The way the caching works is as follows:
         * Calls to WriteToSnoMask write to a cache, if the call is the same as it was
index 2e682675d8ebc480cd32de180a76ab56f6dd3cdc..e12f95d6b4eb754b72639490cc5fd575ce7e3e80 100644 (file)
@@ -73,6 +73,13 @@ void SnomaskManager::WriteToSnoMask(char letter, const std::string &text)
        }
 }
 
+void SnomaskManager::WriteGlobalSno(char letter, const std::string& text)
+{
+       WriteToSnoMask(letter, text);
+       letter = toupper(letter);
+       ServerInstance->PI->SendSNONotice(std::string(1, letter), text);
+}
+
 void SnomaskManager::WriteToSnoMask(char letter, const char* text, ...)
 {
        char textbuffer[MAXBUF];
@@ -85,6 +92,18 @@ void SnomaskManager::WriteToSnoMask(char letter, const char* text, ...)
        this->WriteToSnoMask(letter, std::string(textbuffer));
 }
 
+void SnomaskManager::WriteGlobalSno(char letter, const char* text, ...)
+{
+       char textbuffer[MAXBUF];
+       va_list argsPtr;
+
+       va_start(argsPtr, text);
+       vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+       va_end(argsPtr);
+
+       this->WriteGlobalSno(letter, std::string(textbuffer));
+}
+
 bool SnomaskManager::IsEnabled(char letter)
 {
        return (SnoMasks.find(letter) != SnoMasks.end());