]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/u_listmode.h
Move Blocking/NonBlocking to socket.cpp and make inline
[user/henk/code/inspircd.git] / include / u_listmode.h
index 036319b9e1491412c59463a510cd5a881c522e85..b3958caa2f7d5a352a83c15b4171cf90fd72c34b 100644 (file)
@@ -64,6 +64,26 @@ class ListModeBase : public ModeHandler
                infokey = "exceptionbase_mode_" + std::string(1, mode) + "_list";
        }
 
+        std::pair<bool,std::string> ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter)
+        {
+               log(DEBUG,"ListMode: ModeSet()");
+               modelist* el;
+               channel->GetExt(infokey, el);
+               if (el)
+               {
+                       for (modelist::iterator it = el->begin(); it != el->end(); it++)
+                       {
+                               if(parameter == it->mask)
+                               {
+                                       log(DEBUG,"Found item %s",parameter.c_str());
+                                       return std::make_pair(true, parameter);
+                               }
+                       }
+               }
+               log(DEBUG,"Didnt find item %s",parameter.c_str());
+               return std::make_pair(false, parameter);
+        }
+
        virtual void DisplayList(userrec* user, chanrec* channel)
        {
                modelist* el;
@@ -72,10 +92,10 @@ class ListModeBase : public ModeHandler
                {
                        for(modelist::iterator it = el->begin(); it != el->end(); it++)
                        {
-                               WriteServ(user->fd, "%s %s %s %s %s %s", listnumeric.c_str(), user->nick, channel->name, it->mask.c_str(), it->nick.c_str(), it->time.c_str());
+                               user->WriteServ( "%s %s %s %s %s %s", listnumeric.c_str(), user->nick, channel->name, it->mask.c_str(), it->nick.c_str(), it->time.c_str());
                        }
                }
-               WriteServ(user->fd, "%s %s %s %s", endoflistnumeric.c_str(), user->nick, channel->name, endofliststring.c_str());
+               user->WriteServ( "%s %s %s %s", endoflistnumeric.c_str(), user->nick, channel->name, endofliststring.c_str());
        }
 
        virtual void DoRehash()
@@ -191,7 +211,7 @@ class ListModeBase : public ModeHandler
                        /* List is full, give subclass a chance to send a custom message */
                        if(!TellListTooLong(source, channel, parameter))
                        {
-                               WriteServ(source->fd, "478 %s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str());
+                               source->WriteServ("478 %s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str());
                        }
                        
                        parameter = "";