]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/u_listmode.h
Fix to allow namespace std { namespace tr1 {
[user/henk/code/inspircd.git] / include / u_listmode.h
index 5c5ddd9ffe42df670e1ba4f599979fb8dcfbaf46..cad52fc12c4c578a6deda9806afe91428a158dcd 100644 (file)
@@ -31,7 +31,7 @@ class ListItem : public classbase
 {
 public:
        std::string nick;
-       irc::string mask;
+       std::string mask;
        std::string time;
 };
 
@@ -153,15 +153,15 @@ class ListModeBase : public ModeHandler
                {
                        for (modelist::reverse_iterator it = el->rbegin(); it != el->rend(); ++it)
                        {
-                               user->WriteNumeric(listnumeric, "%s %s %s %s %s", user->nick, channel->name, it->mask.c_str(), it->nick.c_str(), it->time.c_str());
+                               user->WriteNumeric(listnumeric, "%s %s %s %s %s", user->nick.c_str(), channel->name.c_str(), it->mask.c_str(), it->nick.c_str(), it->time.c_str());
                        }
                }
-               user->WriteNumeric(endoflistnumeric, "%s %s :%s", user->nick, channel->name, endofliststring.c_str());
+               user->WriteNumeric(endoflistnumeric, "%s %s :%s", user->nick.c_str(), channel->name.c_str(), endofliststring.c_str());
        }
 
        virtual void DisplayEmptyList(User* user, Channel* channel)
        {
-               user->WriteNumeric(endoflistnumeric, "%s %s :%s", user->nick, channel->name, endofliststring.c_str());
+               user->WriteNumeric(endoflistnumeric, "%s %s :%s", user->nick.c_str(), channel->name.c_str(), endofliststring.c_str());
        }
 
        /** Remove all instances of the mode from a channel.
@@ -174,7 +174,7 @@ class ListModeBase : public ModeHandler
                channel->GetExt(infokey, el);
                if (el)
                {
-                       irc::modestacker modestack(false);
+                       irc::modestacker modestack(ServerInstance, false);
                        std::deque<std::string> stackresult;
                        std::vector<std::string> mode_junk;
                        mode_junk.push_back(channel->name);
@@ -182,9 +182,9 @@ class ListModeBase : public ModeHandler
                        for (modelist::iterator it = el->begin(); it != el->end(); it++)
                        {
                                if (stack)
-                                       stack->Push(this->GetModeChar(), assign(it->mask));
+                                       stack->Push(this->GetModeChar(), it->mask);
                                else
-                                       modestack.Push(this->GetModeChar(), assign(it->mask));
+                                       modestack.Push(this->GetModeChar(), it->mask);
                        }
 
                        if (stack)
@@ -284,11 +284,11 @@ class ListModeBase : public ModeHandler
 
                        for (limitlist::iterator it = chanlimits.begin(); it != chanlimits.end(); it++)
                        {
-                               if (match(channel->name, it->mask.c_str()))
+                               if (match(channel->name, it->mask))
                                {
                                        // We have a pattern matching the channel...
                                        maxsize = el->size();
-                                       if (maxsize < it->limit)
+                                       if (IS_LOCAL(source) || (maxsize < it->limit))
                                        {
                                                /* Ok, it *could* be allowed, now give someone subclassing us
                                                 * a chance to validate the parameter.
@@ -304,7 +304,7 @@ class ListModeBase : public ModeHandler
                                                {
                                                        // And now add the mask onto the list...
                                                        ListItem e;
-                                                       e.mask = assign(parameter);
+                                                       e.mask = parameter;
                                                        e.nick = servermode ? ServerInstance->Config->ServerName : source->nick;
                                                        e.time = stringtime();
 
@@ -323,7 +323,7 @@ class ListModeBase : public ModeHandler
                        /* List is full, give subclass a chance to send a custom message */
                        if (!TellListTooLong(source, channel, parameter))
                        {
-                               source->WriteNumeric(478, "%s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str());
+                               source->WriteNumeric(478, "%s %s %s :Channel ban/ignore list is full", source->nick.c_str(), channel->name.c_str(), parameter.c_str());
                        }
                        
                        parameter = "";
@@ -396,13 +396,13 @@ class ListModeBase : public ModeHandler
        {
                modelist* mlist;
                chan->GetExt(infokey, mlist);
-               irc::modestacker modestack(true);
+               irc::modestacker modestack(ServerInstance, true);
                std::deque<std::string> stackresult;
                if (mlist)
                {
                        for (modelist::iterator it = mlist->begin(); it != mlist->end(); it++)
                        {
-                               modestack.Push(std::string(1, mode)[0], assign(it->mask));
+                               modestack.Push(std::string(1, mode)[0], it->mask);
                        }
                }
                while (modestack.GetStackedLine(stackresult))