X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fctcpparser.cpp;h=37b0af3e910e69522ddd0dde4cbbb11808cf827e;hp=db285a68c43786498e2c98b0e9a2353a2139e44e;hb=b5e38970ffd55e2dd9f706ce75af9a8d7730b1b8;hpb=61fd20ec28db1dc1e36edee78a48f9a7d516c8f0 diff --git a/src/core/ctcpparser.cpp b/src/core/ctcpparser.cpp index db285a68..37b0af3e 100644 --- a/src/core/ctcpparser.cpp +++ b/src/core/ctcpparser.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -312,30 +312,13 @@ QByteArray CtcpParser::pack(const QByteArray &ctcpTag, const QByteArray &message void CtcpParser::query(CoreNetwork *net, const QString &bufname, const QString &ctcpTag, const QString &message) { - QList params; - QList newparams; - params << net->serverEncode(bufname) << lowLevelQuote(pack(net->serverEncode(ctcpTag), net->userEncode(bufname, message))); - - static const char *splitter = " .,-!?"; - int maxSplitPos = message.count(); - int splitPos = maxSplitPos; + QString cmd("PRIVMSG"); - int overrun = net->userInputHandler()->lastParamOverrun("PRIVMSG", params); - if (overrun) { - maxSplitPos = message.count() - overrun -2; - splitPos = -1; - for (const char *splitChar = splitter; *splitChar != 0; splitChar++) { - splitPos = qMax(splitPos, message.lastIndexOf(*splitChar, maxSplitPos) + 1); // keep split char on old line - } - if (splitPos <= 0 || splitPos > maxSplitPos) - splitPos = maxSplitPos; - newparams << net->serverEncode(bufname) << lowLevelQuote(pack(net->serverEncode(ctcpTag), net->userEncode(bufname, message.left(splitPos)))); - params = newparams; - } - net->putCmd("PRIVMSG", params); + std::function(QString &)> cmdGenerator = [&] (QString &splitMsg) -> QList { + return QList() << net->serverEncode(bufname) << lowLevelQuote(pack(net->serverEncode(ctcpTag), net->userEncode(bufname, splitMsg))); + }; - if (splitPos < message.count()) - query(net, bufname, ctcpTag, message.mid(splitPos)); + net->putCmd(cmd, net->splitMessage(cmd, message, cmdGenerator)); }