]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
Tidying of snotices (adding '***' to start of WriteOpers texts)
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index c6396705c2e5201edf381f0c96f3acfbd3b6b450..454604303161901ed84e4fc3937277de3d25cdd8 100644 (file)
@@ -125,7 +125,7 @@ void readfile(file_cache &F, const char* fname)
 
 void Write_NoFormat(int sock, const char *text)
 {
-       if ((sock < 0) || (!text))
+       if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
                return;
 
        char tb[MAXBUF];
@@ -148,7 +148,7 @@ void Write_NoFormat(int sock, const char *text)
 
 void Write(int sock,char *text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if (!text)
         {
@@ -179,7 +179,7 @@ void Write(int sock,char *text, ...)
 
 void WriteServ_NoFormat(int sock, const char* text)
 {
-       if ((sock < 0) || (!text))
+       if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
                return;
        char tb[MAXBUF];
        int bytes = snprintf(tb,MAXBUF,":%s %s\r\n",Config->ServerName,text);
@@ -203,7 +203,7 @@ void WriteServ_NoFormat(int sock, const char* text)
 
 void WriteServ(int sock, char* text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if (!text)
         {
@@ -234,7 +234,7 @@ void WriteServ(int sock, char* text, ...)
 
 void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
 {
-       if ((sock < 0) || (!text) || (!user))
+       if ((sock < 0) || (!text) || (!user) || (sock > MAX_DESCRIPTORS))
                return;
        char tb[MAXBUF];
        int bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),text);
@@ -258,7 +258,7 @@ void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
 
 void WriteFrom(int sock, userrec *user,char* text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if ((!text) || (!user))
         {
@@ -484,7 +484,7 @@ void WriteChannelWithServ_NoFormat(char* ServName, chanrec* Ptr, const char* tex
 /* write formatted text from a source user to all users on a channel except
  * for the sender (for privmsg etc) */
 
-void ChanExceptSender(chanrec* Ptr, userrec* user, char* text, ...)
+void ChanExceptSender(chanrec* Ptr, userrec* user, char status, char* text, ...)
 {
         if ((!Ptr) || (!user) || (!text))
         {
@@ -497,7 +497,23 @@ void ChanExceptSender(chanrec* Ptr, userrec* user, char* text, ...)
         vsnprintf(textbuffer, MAXBUF, text, argsPtr);
         va_end(argsPtr);
 
-        std::map<char*,char*> *ulist= Ptr->GetUsers();
+        std::map<char*,char*> *ulist;
+       switch (status)
+       {
+               case '@':
+                       ulist = Ptr->GetOppedUsers();
+               break;
+               case '%':
+                       ulist = Ptr->GetHalfoppedUsers();
+               break;
+               case '+':
+                       ulist = Ptr->GetVoicedUsers();
+               break;
+               default:
+                       ulist = Ptr->GetUsers();
+               break;
+       }
+       log(DEBUG,"%d users to write to",ulist->size());
        for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
         {
                 char* o = i->second;
@@ -507,14 +523,29 @@ void ChanExceptSender(chanrec* Ptr, userrec* user, char* text, ...)
         }
 }
 
-void ChanExceptSender_NoFormat(chanrec* Ptr, userrec* user, const char* text)
+void ChanExceptSender_NoFormat(chanrec* Ptr, userrec* user, char status, const char* text)
 {
         if ((!Ptr) || (!user) || (!text))
         {
                 log(DEFAULT,"*** BUG *** ChanExceptSender was given an invalid parameter");
                 return;
         }
-        std::map<char*,char*> *ulist= Ptr->GetUsers();
+        std::map<char*,char*> *ulist;
+        switch (status)
+        {
+                case '@':
+                        ulist = Ptr->GetOppedUsers();
+                break;  
+                case '%':
+                        ulist = Ptr->GetHalfoppedUsers();
+                break;
+                case '+':
+                        ulist = Ptr->GetVoicedUsers();
+                break;
+                default:
+                       ulist = Ptr->GetUsers();
+               break;
+        }
         for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
         {
                 char* o = i->second;