X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fexecwrapper.cpp;h=4958eb6c41e5ff883699fe370357fb39c0233c91;hp=ee4a6db1b6004f4dda44ae9bdcb3ddf54e5296b2;hb=4d1ce9deedfc96b261ad2f209715549284821a37;hpb=1d94f920822184449fe1a6e76051e3c936d3163a diff --git a/src/client/execwrapper.cpp b/src/client/execwrapper.cpp index ee4a6db1..4958eb6c 100644 --- a/src/client/execwrapper.cpp +++ b/src/client/execwrapper.cpp @@ -49,15 +49,15 @@ void ExecWrapper::start(const BufferInfo &info, const QString &command) { } // Make sure we don't execute something outside a script dir - if(_scriptName.startsWith('/') || _scriptName.contains("../")) - emit error(tr("Name \"%1\" is invalid: / or ../ are not allowed!").arg(_scriptName)); + if(_scriptName.contains("../") || _scriptName.contains("..\\")) + emit error(tr("Name \"%1\" is invalid: ../ or ..\\ are not allowed!").arg(_scriptName)); else { foreach(QString scriptDir, Quassel::scriptDirPaths()) { QString fileName = scriptDir + _scriptName; if(!QFile::exists(fileName)) continue; - _process.start(fileName + ' ' + params); + _process.start('"' + fileName + "\" " + params); return; } emit error(tr("Could not find script \"%1\"").arg(_scriptName)); @@ -103,7 +103,9 @@ void ExecWrapper::processError(QProcess::ProcessError err) { } void ExecWrapper::processReadStdout() { - _stdoutBuffer.append(QTextCodec::codecForLocale()->toUnicode(_process.readAllStandardOutput())); + QString str = QTextCodec::codecForLocale()->toUnicode(_process.readAllStandardOutput()); + str.replace(QRegExp("\r\n?"), "\n"); + _stdoutBuffer.append(str); int idx; while((idx = _stdoutBuffer.indexOf('\n')) >= 0) { emit output(_stdoutBuffer.left(idx)); @@ -112,7 +114,9 @@ void ExecWrapper::processReadStdout() { } void ExecWrapper::processReadStderr() { - _stderrBuffer.append(QTextCodec::codecForLocale()->toUnicode(_process.readAllStandardError())); + QString str = QTextCodec::codecForLocale()->toUnicode(_process.readAllStandardError()); + str.replace(QRegExp("\r\n?"), "\n"); + _stderrBuffer.append(str); int idx; while((idx = _stderrBuffer.indexOf('\n')) >= 0) { emit error(_stderrBuffer.left(idx));