diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2020-11-08 18:19:54 +0100 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-11-09 18:21:37 +0000 |
commit | 21ff28bd5a0e0f3d16a09885df45e045a515b450 (patch) | |
tree | a87e72f15510f5709128b83d6e4146d49eae5d44 /src/lib/corelib/jsextensions/process.cpp | |
parent | bf272e348b0b45dd2b1af11d56819047dce3c85a (diff) |
qt6: do not use QTextStream::setCodec method
...it is gone now
Change-Id: Ie636dd6812fda4df0c149de240662d39ac63b86a
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/jsextensions/process.cpp')
-rw-r--r-- | src/lib/corelib/jsextensions/process.cpp | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/lib/corelib/jsextensions/process.cpp b/src/lib/corelib/jsextensions/process.cpp index a91084b4a..8ddb48acd 100644 --- a/src/lib/corelib/jsextensions/process.cpp +++ b/src/lib/corelib/jsextensions/process.cpp @@ -46,10 +46,13 @@ #include <QtCore/qobject.h> #include <QtCore/qprocess.h> -#include <QtCore/qtextcodec.h> #include <QtCore/qtextstream.h> #include <QtCore/qvariant.h> - +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) +#include <QtCore5Compat/qtextcodec.h> +#else +#include <QtCore/qtextcodec.h> +#endif #include <QtScript/qscriptable.h> #include <QtScript/qscriptengine.h> #include <QtScript/qscriptvalue.h> @@ -100,10 +103,10 @@ private: // ResourceAcquiringScriptObject implementation void releaseResources() override; - QProcess *m_qProcess; + QProcess *m_qProcess = nullptr; QProcessEnvironment m_environment; QString m_workingDirectory; - QTextStream *m_textStream; + QTextCodec *m_codec = nullptr; }; QScriptValue Process::ctor(QScriptContext *context, QScriptEngine *engine) @@ -143,7 +146,6 @@ QScriptValue Process::ctor(QScriptContext *context, QScriptEngine *engine) Process::~Process() { - delete m_textStream; delete m_qProcess; } @@ -153,7 +155,7 @@ Process::Process(QScriptContext *context) Q_ASSERT(thisObject().engine() == engine()); m_qProcess = new QProcess; - m_textStream = new QTextStream(m_qProcess); + m_codec = QTextCodec::codecForName("UTF-8"); } QString Process::getEnv(const QString &name) @@ -188,7 +190,7 @@ bool Process::start(const QString &program, const QStringList &arguments) m_qProcess->setWorkingDirectory(m_workingDirectory); m_qProcess->setProcessEnvironment(m_environment); - m_qProcess->start(findExecutable(program), arguments); + m_qProcess->start(findExecutable(program), arguments, QIODevice::ReadWrite | QIODevice::Text); return m_qProcess->waitForStarted(); } @@ -234,8 +236,6 @@ void Process::close() if (!m_qProcess) return; Q_ASSERT(thisObject().engine() == engine()); - delete m_textStream; - m_textStream = nullptr; delete m_qProcess; m_qProcess = nullptr; } @@ -262,32 +262,36 @@ void Process::kill() void Process::setCodec(const QString &codec) { Q_ASSERT(thisObject().engine() == engine()); - m_textStream->setCodec(qPrintable(codec)); + const auto newCodec = QTextCodec::codecForName(qPrintable(codec)); + if (newCodec) + m_codec = newCodec; } QString Process::readLine() { - return m_textStream->readLine(); + auto result = m_codec->toUnicode(m_qProcess->readLine()); + if (!result.isEmpty() && result.back() == QLatin1Char('\n')) + result.chop(1); + return result; } bool Process::atEnd() const { - return m_textStream->atEnd(); + return m_qProcess->atEnd(); } QString Process::readStdOut() { - return m_textStream->readAll(); + return m_codec->toUnicode(m_qProcess->readAllStandardOutput()); } QString Process::readStdErr() { - return m_textStream->codec()->toUnicode(m_qProcess->readAllStandardError()); + return m_codec->toUnicode(m_qProcess->readAllStandardError()); } void Process::closeWriteChannel() { - m_textStream->flush(); m_qProcess->closeWriteChannel(); } @@ -310,15 +314,13 @@ void Process::releaseResources() void Process::write(const QString &str) { - (*m_textStream) << str; + m_qProcess->write(m_codec->fromUnicode(str)); } void Process::writeLine(const QString &str) { - (*m_textStream) << str; - if (HostOsInfo::isWindowsHost()) - (*m_textStream) << '\r'; - (*m_textStream) << '\n'; + m_qProcess->write(m_codec->fromUnicode(str)); + m_qProcess->putChar('\n'); } QScriptValue Process::js_shellQuote(QScriptContext *context, QScriptEngine *engine) |