From 3a56be45a25fb3ea0180299b0c1fc5930eb831a1 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 6 Dec 2024 17:15:19 +0100 Subject: [PATCH] Utils: Add a Process::setUtf8Codec helper function Allows us to get rid of direct includes of in a few places. Change-Id: I9e3ec953c71f78ce31230cd299c6875696445bdc Reviewed-by: Marcus Tillmanns --- src/libs/utils/qtcprocess.cpp | 20 ++++++++++++------- src/libs/utils/qtcprocess.h | 5 +++-- .../projectexplorer/abstractprocessstep.cpp | 4 +--- src/plugins/projectexplorer/msvctoolchain.cpp | 5 ++--- src/plugins/squish/objectsmapdocument.cpp | 4 +--- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index ea27cab3f2c..b7881ae57ba 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -1748,17 +1748,23 @@ void ChannelBuffer::handleRest() } } -void Process::setCodec(QTextCodec *c) +void Process::setCodec(QTextCodec *codec) { - QTC_ASSERT(c, return); - d->m_stdOutCodec = c; - d->m_stdErrCodec = c; + QTC_ASSERT(codec, return); + d->m_stdOutCodec = codec; + d->m_stdErrCodec = codec; } -void Process::setStdOutCodec(QTextCodec *c) +void Process::setUtf8Codec() { - QTC_ASSERT(c, return); - d->m_stdOutCodec = c; + QTextCodec *codec = QTextCodec::codecForName("UTF-8"); + d->m_stdOutCodec = codec; + d->m_stdErrCodec = codec; +} + +void Process::setUtf8StdOutCodec() +{ + d->m_stdOutCodec = QTextCodec::codecForName("UTF-8"); } void Process::setTimeOutMessageBoxEnabled(bool v) diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index bf79f774c88..6288cd396c5 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -143,8 +143,9 @@ public: void runBlocking(std::chrono::seconds timeout = std::chrono::seconds(10), EventLoopMode eventLoopMode = EventLoopMode::Off); - void setCodec(QTextCodec *c); // for stdOut and stdErr - void setStdOutCodec(QTextCodec *c); // for stdOut, stdErr uses executable.processStdErrCodec() + void setCodec(QTextCodec *codec); // for stdOut and stdErr + void setUtf8Codec(); // for stdOut and stdErr + void setUtf8StdOutCodec(); // for stdOut, stdErr uses executable.processStdErrCodec() void setTimeOutMessageBoxEnabled(bool); diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 765b4eb877a..1795c062d41 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -13,8 +13,6 @@ #include #include -#include - using namespace Tasking; using namespace Utils; @@ -195,7 +193,7 @@ bool AbstractProcessStep::setupProcess(Process &process) process.setLowPriority(); if (buildEnvironment().hasKey("VSLANG")) - process.setStdOutCodec(QTextCodec::codecForName("UTF-8")); + process.setUtf8StdOutCodec(); process.setStdOutCallback([this](const QString &s){ emit addOutput(s, OutputFormat::Stdout, DontAppendNewline); diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index e977f776f8c..ab4d75521f3 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include @@ -260,7 +259,7 @@ static QVector detectVisualStudioFromVsWhere(const QSt { QVector installations; Process vsWhereProcess; - vsWhereProcess.setCodec(QTextCodec::codecForName("UTF-8")); + vsWhereProcess.setUtf8Codec(); vsWhereProcess.setCommand({FilePath::fromString(vswhere), {"-products", "*", "-prerelease", "-legacy", "-format", "json", "-utf8"}}); vsWhereProcess.runBlocking(5s); @@ -2114,7 +2113,7 @@ std::optional MsvcToolchain::generateEnvironmentSettings(const Utils::E CommandLine cmd(cmdPath, {"/D", "/E:ON", "/V:ON", "/c", saver.filePath().toUserOutput()}); qCDebug(Log) << "readEnvironmentSetting: " << call << cmd.toUserOutput() << " Env: " << runEnv.toStringList().size(); - run.setCodec(QTextCodec::codecForName("UTF-8")); + run.setUtf8Codec(); run.setCommand(cmd); run.runBlocking(1min); diff --git a/src/plugins/squish/objectsmapdocument.cpp b/src/plugins/squish/objectsmapdocument.cpp index 4e373eead2a..3cb7b5fd7c5 100644 --- a/src/plugins/squish/objectsmapdocument.cpp +++ b/src/plugins/squish/objectsmapdocument.cpp @@ -11,8 +11,6 @@ #include #include -#include - using namespace Utils; namespace Squish { @@ -209,7 +207,7 @@ Core::IDocument::OpenResult ObjectsMapDocument::openImpl(QString *error, Utils::Process objectMapReader; objectMapReader.setCommand({exe, {"--scriptMap", "--mode", "read", "--scriptedObjectMapPath", realFileName.toUserOutput()}}); - objectMapReader.setCodec(QTextCodec::codecForName("UTF-8")); + objectMapReader.setUtf8Codec(); objectMapReader.start(); objectMapReader.waitForFinished(); text = objectMapReader.cleanedStdOut().toUtf8();