summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/u_listmode.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/u_listmode.h b/include/u_listmode.h
index f2abf70ca..2d973f40d 100644
--- a/include/u_listmode.h
+++ b/include/u_listmode.h
@@ -301,13 +301,21 @@ class ListModeBase : public ModeHandler
{
modelist* list;
chan->GetExt(infokey, list);
+ irc::modestacker modestack(true);
+ std::deque<std::string> stackresult;
if (list)
{
for (modelist::iterator it = list->begin(); it != list->end(); it++)
{
- proto->ProtoSendMode(opaque, TYPE_CHANNEL, chan, "+" + std::string(1, mode) + " " + it->mask);
+ modestack.Push(std::string(1, mode)[0], it->mask);
}
}
+ while (modestack.GetStackedLine(stackresult))
+ {
+ irc::stringjoiner mode_join(" ", stackresult, 0, stackresult.size() - 1);
+ std::string line = mode_join.GetJoined();
+ proto->ProtoSendMode(opaque,TYPE_CHANNEL,chan, line);
+ }
}
virtual void DoCleanup(int target_type, void* item)