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();
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]);
command = command.replace(QString("$%1").arg(j), params[j - 1]);
}
command = command.replace("$0", msg);
+ command = command.replace("$channelname", bufferInfo.bufferName());
+ command = command.replace("$currentnick", network()->myNick());
handleUserInput(bufferInfo, command);
}
}