X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fuserinputhandler.cpp;h=61671707638c1771b235c6aabc944f45458baaec;hb=7ce0cf6c209c30b1b8702e6623cb6d6d6cad822d;hp=00aabc2a68b60f799f7976657cec0a036457fb03;hpb=1d3457646bc3b4a82ee24947f0d2a2e56f507895;p=quassel.git diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index 00aabc2a..61671707 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -41,7 +41,7 @@ void UserInputHandler::handleUserInput(const BufferInfo &bufferInfo, const QStri int secondSlashPos = msg.indexOf('/', 1); int firstSpacePos = msg.indexOf(' '); if(!msg.startsWith('/') || (secondSlashPos != -1 && (secondSlashPos < firstSpacePos || firstSpacePos == -1))) { - if(secondSlashPos == 1) + if(msg.startsWith("//")) msg.remove(0, 1); // //asdf is transformed to /asdf cmd = QString("SAY"); } else { @@ -156,9 +156,15 @@ void UserInputHandler::handleJoin(const BufferInfo &bufferInfo, const QString &m QStringList params = msg.trimmed().split(" "); QStringList chans = params[0].split(","); QStringList keys; + int i; + for(i = 0; i < chans.count(); i++) { + if (chans.at(i)[0].isLetterOrNumber()) + chans[i].prepend(QChar('#')); + } + params[0] = chans.join(","); if(params.count() > 1) keys = params[1].split(","); emit putCmd("JOIN", serverEncode(params)); // FIXME handle messages longer than 512 bytes! - int i = 0; + i = 0; for(; i < keys.count(); i++) { if(i >= chans.count()) break; networkConnection()->addChannelKey(chans[i], keys[i]); @@ -362,6 +368,8 @@ void UserInputHandler::expand(const QString &alias, const BufferInfo &bufferInfo for(int i = 0; i < commands.count(); i++) { QString command = commands[i]; for(int j = params.count(); j > 0; j--) { + IrcUser *ircUser = network()->ircUser(params[j - 1]); + command = command.replace(QString("$%1:hostname").arg(j), ircUser ? ircUser->host() : QString("*")); command = command.replace(QString("$%1").arg(j), params[j - 1]); } command = command.replace("$0", msg);