X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fuserinputhandler.cpp;h=61671707638c1771b235c6aabc944f45458baaec;hp=deddc925f10acfefb189951919ff08652e6f8684;hb=94be5fb31afd8f3befa8cb2cf1b3c2e5ef3cdba5;hpb=82dd90f4684db4240311edc13bd3707772e0dbe8 diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index deddc925..61671707 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -37,7 +37,12 @@ void UserInputHandler::handleUserInput(const BufferInfo &bufferInfo, const QStri return; QString cmd; QString msg = msg_; - if(!msg.startsWith('/')) { + // leading slashes indicate there's a command to call unless there is anothere one in the first section (like a path /proc/cpuinfo) + int secondSlashPos = msg.indexOf('/', 1); + int firstSpacePos = msg.indexOf(' '); + if(!msg.startsWith('/') || (secondSlashPos != -1 && (secondSlashPos < firstSpacePos || firstSpacePos == -1))) { + if(msg.startsWith("//")) + msg.remove(0, 1); // //asdf is transformed to /asdf cmd = QString("SAY"); } else { cmd = msg.section(' ', 0, 0).remove(0, 1).toUpper(); @@ -151,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]); @@ -357,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);