summaryrefslogtreecommitdiffstats
path: root/src/ProcessManager.cpp
diff options
context:
space:
mode:
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()))
{