diff options
Diffstat (limited to 'src/ProcessManager.cpp')
| -rw-r--r-- | src/ProcessManager.cpp | 14 |
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())) { |
