summaryrefslogtreecommitdiffstats
path: root/src/ProcessManager.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2016-10-04 22:39:43 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2016-10-04 22:39:43 +0200
commit4d70cb1f3d6b05b8a2fb58137988c2820e9590d2 (patch)
tree738074a473bea498d63ee54128430df99f96128e /src/ProcessManager.cpp
parent6cc8a285eebd0b8e082372fd7e8d127d92b9dedc (diff)
downloadmanager-4d70cb1f3d6b05b8a2fb58137988c2820e9590d2.tar.gz
manager-4d70cb1f3d6b05b8a2fb58137988c2820e9590d2.zip
"Fix" encoding of Clonk's arguments in CP1252 (to support Scenario names
with umlauts coming from windows)
Diffstat (limited to 'src/ProcessManager.cpp')
-rw-r--r--src/ProcessManager.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/ProcessManager.cpp b/src/ProcessManager.cpp
index 5a9e89f..dc2aa10 100644
--- a/src/ProcessManager.cpp
+++ b/src/ProcessManager.cpp
@@ -4,9 +4,19 @@
#include <QProcess>
#include <QThread>
#include <QDebug>
+#include <QTextCodec>
-ProcessManager::ProcessManager(const QString &newPrefix, const QString &newId, bool useStdErr, QObject *parent) : QObject(parent), prefix(newPrefix), id(newId), useStdErr(useStdErr)
+ProcessManager::ProcessManager(const QString &newPrefix, const QString &newId, bool useStdErr, QTextCodec* argumentsCodec, QObject *parent) : QObject(parent), prefix(newPrefix), id(newId), useStdErr(useStdErr)
{
+ if(argumentsCodec == nullptr)
+ {
+ this->argumentsCodec = QTextCodec::codecForName("UTF-8");
+ }
+ else
+ {
+ this->argumentsCodec = argumentsCodec;
+ }
+
if(id.isEmpty())
{
id = QString::number(qrand()) + "-";
@@ -108,7 +118,7 @@ bool ProcessManager::start(const QString &program, QStringList args)
{
args[i] = args[i].replace('\\', "\\\\").replace(' ', "\\ ");
}
- ctrlIn.write("START " + program.toUtf8() + " " + args.join(' ').toUtf8() + "\n");
+ ctrlIn.write("START " + program.toUtf8() + " " + argumentsCodec->fromUnicode(args.join(' ')) + "\n");
QRegExp runningExp("^RUNNING: (\\d+)\n$");
if(!runningExp.exactMatch(ctrlOut.readLine()))
{