]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/u_listmode.h
Proritise cached value above a search
[user/henk/code/inspircd.git] / include / u_listmode.h
index 0e2f051036f7288b6501f90e38f2913a987ae593..28c364698fb07010b34d3fb0dbcfab88c5ccfaf9 100644 (file)
@@ -1,3 +1,16 @@
+/*       +------------------------------------+
+ *       | Inspire Internet Relay Chat Daemon |
+ *       +------------------------------------+
+ *
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
+ * This program is free but copyrighted software; see
+ *            the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
 #ifndef INSPIRCD_LISTMODE_PROVIDER
 #define INSPIRCD_LISTMODE_PROVIDER
 
@@ -49,6 +62,21 @@ public:
 typedef std::vector<ListItem> modelist;
 typedef std::vector<ListLimit> limitlist;
 
+class ListModeRequest : public Request
+{
+ public:
+       userrec* user;
+       chanrec* chan;
+
+       ListModeRequest(Module* sender, Module* target, userrec* u, chanrec* c) : Request(sender, target, "LM_CHECKLIST"), user(u), chan(c)
+       {
+       }
+
+       ~ListModeRequest()
+       {
+       }
+};
+
 /** The base class for listmodes defined by u_listmode.h
  */
 class ListModeBase : public ModeHandler
@@ -98,7 +126,7 @@ class ListModeBase : public ModeHandler
                                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());
                        }
                }
-               user->WriteServ("%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 RemoveMode(chanrec* channel)
@@ -109,9 +137,10 @@ class ListModeBase : public ModeHandler
                if (el)
                {
                        ServerInstance->Log(DEBUG,"Channel is extended with a list");
-                       irc::modestacker modestack(true);
+                       irc::modestacker modestack(false);
                        std::deque<std::string> stackresult;
                        const char* mode_junk[MAXMODES+1];
+                       mode_junk[0] = channel->name;
                        userrec* n = new userrec(ServerInstance);
                        n->SetFd(FD_MAGIC_NUMBER);
                        for(modelist::iterator it = el->begin(); it != el->end(); it++)