Utils: More explicit host os use to make it stand out

Quite a few of the uses are actually wrong, but are better visible
now and therefore more likely to be fixed.

Change-Id: Ia51f7d6eb1b2d3a9c9f73d67dabacfd227c44b15
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2023-02-07 16:46:47 +01:00
parent d0fae7fa59
commit 5d21da74f9
21 changed files with 43 additions and 30 deletions

View File

@@ -55,7 +55,7 @@ public:
//! Append already quoted arguments to a shell command
static void addArgs(QString *args, const QString &inArgs);
//! Split a shell command into separate arguments.
static QStringList splitArgs(const QString &cmd, OsType osType = HostOsInfo::hostOs(),
static QStringList splitArgs(const QString &cmd, OsType osType,
bool abortOnMeta = false, SplitError *err = nullptr,
const Environment *env = nullptr, const QString *pwd = nullptr);
//! Safely replace the expandos in a shell command

View File

@@ -13,6 +13,8 @@
#include <QFile>
#include <QFileInfo>
using namespace Utils;
namespace AutotoolsProjectManager::Internal {
MakefileParser::MakefileParser(const QString &makefile) : m_makefile(makefile)
@@ -423,7 +425,7 @@ QStringList MakefileParser::parseTermsAfterAssign(const QString &line)
if (assignPos <= 0 || assignPos >= line.size())
return QStringList();
const QStringList parts = Utils::ProcessArgs::splitArgs(line.mid(assignPos));
const QStringList parts = ProcessArgs::splitArgs(line.mid(assignPos), HostOsInfo::hostOs());
QStringList result;
for (int i = 0; i < parts.count(); ++i) {
const QString cur = parts.at(i);

View File

@@ -64,7 +64,7 @@ QString OpenOcdGdbServerProvider::channelString() const
// otherwise running will be stuck.
CommandLine cmd = command();
QStringList args = {"|", cmd.executable().toString()};
for (const QString &a : ProcessArgs::splitArgs(cmd.arguments())) {
for (const QString &a : ProcessArgs::splitArgs(cmd.arguments(), HostOsInfo::hostOs())) {
if (a.startsWith('\"') && a.endsWith('\"'))
args << a;
else

View File

@@ -284,7 +284,7 @@ static QStringList extraOptions(const QString &envVar)
if (!qtcEnvironmentVariableIsSet(envVar))
return QStringList();
QString arguments = qtcEnvironmentVariable(envVar);
return Utils::ProcessArgs::splitArgs(arguments);
return ProcessArgs::splitArgs(arguments, HostOsInfo::hostOs());
}
QStringList extraClangToolsPrependOptions()

View File

@@ -643,7 +643,7 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
// As the user would expect to have e.g. "--preset" from "Initial Configuration"
// to "Current Configuration" as additional parameters
m_buildSystem->setAdditionalCMakeArguments(ProcessArgs::splitArgs(
bc->aspect<InitialCMakeArgumentsAspect>()->value()));
bc->aspect<InitialCMakeArgumentsAspect>()->value(), HostOsInfo::hostOs()));
}
void CMakeBuildSettingsWidget::kitCMakeConfiguration()
@@ -823,9 +823,10 @@ void CMakeBuildSettingsWidget::updateFromKit()
// Then the additional parameters
const QStringList additionalKitCMake = ProcessArgs::splitArgs(
CMakeConfigurationKitAspect::additionalConfiguration(k));
CMakeConfigurationKitAspect::additionalConfiguration(k), HostOsInfo::hostOs());
const QStringList additionalInitialCMake = ProcessArgs::splitArgs(
m_buildSystem->buildConfiguration()->aspect<InitialCMakeArgumentsAspect>()->value());
m_buildSystem->buildConfiguration()->aspect<InitialCMakeArgumentsAspect>()->value(),
HostOsInfo::hostOs());
QStringList mergedArgumentList;
std::set_union(additionalInitialCMake.begin(),
@@ -1725,7 +1726,8 @@ void CMakeBuildSystem::setInitialCMakeArguments(const QStringList &args)
QStringList CMakeBuildSystem::additionalCMakeArguments() const
{
return ProcessArgs::splitArgs(buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value());
return ProcessArgs::splitArgs(buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value(),
HostOsInfo::hostOs());
}
void CMakeBuildSystem::setAdditionalCMakeArguments(const QStringList &args)
@@ -1748,7 +1750,8 @@ void CMakeBuildSystem::filterConfigArgumentsFromAdditionalCMakeArguments()
// which is already part of the CMake variables and should not be also
// in the addtional CMake options
const QStringList arguments = ProcessArgs::splitArgs(
buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value());
buildConfiguration()->aspect<AdditionalCMakeOptionsAspect>()->value(),
HostOsInfo::hostOs());
QStringList unknownOptions;
const CMakeConfig config = CMakeConfig::fromArguments(arguments, unknownOptions);
@@ -2144,7 +2147,7 @@ const QStringList InitialCMakeArgumentsAspect::allValues() const
return ci.toArgument(nullptr);
});
initialCMakeArguments.append(ProcessArgs::splitArgs(value()));
initialCMakeArguments.append(ProcessArgs::splitArgs(value(), HostOsInfo::hostOs()));
return initialCMakeArguments;
}

View File

@@ -245,7 +245,7 @@ QList<CMakeBuildTarget> generateBuildTargets(const PreprocessedData &input,
continue;
// CMake sometimes mixes several shell-escaped pieces into one fragment. Disentangle that again:
const QStringList parts = ProcessArgs::splitArgs(f.fragment);
const QStringList parts = ProcessArgs::splitArgs(f.fragment, HostOsInfo::hostOs());
for (QString part : parts) {
// Library search paths that are added with target_link_directories are added as
// -LIBPATH:... (Windows/MSVC), or
@@ -306,7 +306,7 @@ static QStringList splitFragments(const QStringList &fragments)
{
QStringList result;
for (const QString &f : fragments) {
result += ProcessArgs::splitArgs(f);
result += ProcessArgs::splitArgs(f, HostOsInfo::hostOs());
}
return result;
}

View File

@@ -76,7 +76,8 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const FilePath &pathIn)
const QString folder = fileInfo.isDir() ? fileInfo.absoluteFilePath() : fileInfo.filePath();
const QString app = UnixUtils::fileBrowser(ICore::settings());
QStringList browserArgs = ProcessArgs::splitArgs(
UnixUtils::substituteFileBrowserParameters(app, folder));
UnixUtils::substituteFileBrowserParameters(app, folder),
HostOsInfo::hostOs());
QString error;
if (browserArgs.isEmpty()) {
error = Tr::tr("The command for file browser is not set.");

View File

@@ -267,7 +267,8 @@ void LldbEngine::handleLldbStarted()
cmd2.arg("nativemixed", isNativeMixedActive());
cmd2.arg("workingdirectory", rp.inferior.workingDirectory.path());
cmd2.arg("environment", rp.inferior.environment.toStringList());
cmd2.arg("processargs", toHex(ProcessArgs::splitArgs(rp.inferior.command.arguments()).join(QChar(0))));
cmd2.arg("processargs", toHex(ProcessArgs::splitArgs(rp.inferior.command.arguments(),
HostOsInfo::hostOs()).join(QChar(0))));
cmd2.arg("platform", rp.platform);
cmd2.arg("symbolfile", rp.symbolFile.path());

View File

@@ -400,7 +400,7 @@ static QStringList readFlags(const QString &filePath)
return QStringList();
QStringList flags;
for (const auto &line : lines)
flags.append(ProcessArgs::splitArgs(line));
flags.append(ProcessArgs::splitArgs(line, HostOsInfo::hostOs()));
return flags;
}

View File

@@ -101,7 +101,8 @@ QWidget *IosBuildStep::createConfigWidget()
updateDetails();
connect(buildArgumentsTextEdit, &QPlainTextEdit::textChanged, this, [=] {
setBaseArguments(ProcessArgs::splitArgs(buildArgumentsTextEdit->toPlainText()));
setBaseArguments(ProcessArgs::splitArgs(buildArgumentsTextEdit->toPlainText(),
HostOsInfo::hostOs()));
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
updateDetails();
});
@@ -113,7 +114,8 @@ QWidget *IosBuildStep::createConfigWidget()
});
connect(extraArgumentsLineEdit, &QLineEdit::editingFinished, this, [=] {
setExtraArguments(ProcessArgs::splitArgs(extraArgumentsLineEdit->text()));
setExtraArguments(ProcessArgs::splitArgs(extraArgumentsLineEdit->text(),
HostOsInfo::hostOs()));
});
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,

View File

@@ -242,7 +242,8 @@ QWidget *IosDsymBuildStep::createConfigWidget()
connect(argumentsTextEdit, &QPlainTextEdit::textChanged, this,
[this, argumentsTextEdit, resetDefaultsButton, updateDetails] {
setArguments(Utils::ProcessArgs::splitArgs(argumentsTextEdit->toPlainText()));
setArguments(ProcessArgs::splitArgs(argumentsTextEdit->toPlainText(),
HostOsInfo::hostOs()));
resetDefaultsButton->setEnabled(!isDefault());
updateDetails();
});

View File

@@ -91,7 +91,8 @@ void MesonBuildConfiguration::build(const QString &target)
QStringList MesonBuildConfiguration::mesonConfigArgs()
{
return Utils::ProcessArgs::splitArgs(m_parameters) + QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
return Utils::ProcessArgs::splitArgs(m_parameters, HostOsInfo::hostOs())
+ QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
}
const QString &MesonBuildConfiguration::parameters() const

View File

@@ -76,7 +76,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget()
auto updateUi = [=] {
const CommandLine cmd = commandLine();
const QStringList parts = ProcessArgs::splitArgs(cmd.toUserOutput());
const QStringList parts = ProcessArgs::splitArgs(cmd.toUserOutput(), HostOsInfo::hostOs());
commandTextEdit->setText(parts.join(QChar::LineFeed));

View File

@@ -122,7 +122,7 @@ QStringList PerfSettings::perfRecordArguments() const
"--call-graph", callgraphArg,
sampleMode.itemValue().toString(),
QString::number(period.value())})
+ ProcessArgs::splitArgs(extraArguments.value());
+ ProcessArgs::splitArgs(extraArguments.value(), HostOsInfo::hostOs());
}
void PerfSettings::resetToDefault()

View File

@@ -78,7 +78,7 @@ static void startTerminalEmulator(const QString &workingDir, const Environment &
const TerminalCommand term = TerminalCommand::terminalEmulator();
QProcess process;
process.setProgram(term.command.nativePath());
process.setArguments(ProcessArgs::splitArgs(term.openArgs));
process.setArguments(ProcessArgs::splitArgs(term.openArgs, HostOsInfo::hostOs()));
process.setProcessEnvironment(env.toProcessEnvironment());
process.setWorkingDirectory(workingDir);
process.startDetached();

View File

@@ -1385,8 +1385,10 @@ void GccToolChainConfigWidget::setFromToolchain()
QSignalBlocker blocker(this);
auto tc = static_cast<GccToolChain *>(toolChain());
m_compilerCommand->setFilePath(tc->compilerCommand());
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags()));
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags()));
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags(),
HostOsInfo::hostOs()));
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags(),
HostOsInfo::hostOs()));
if (m_abiWidget) {
m_abiWidget->setAbis(tc->supportedAbis(), tc->targetAbi());
if (!m_isReadOnly && !m_compilerCommand->filePath().toString().isEmpty())

View File

@@ -479,8 +479,8 @@ void QmakeProjectManagerPlugin::testMakefileParser()
MakeFileParse parser("/tmp/something", MakeFileParse::Mode::FilterKnownConfigValues);
parser.parseCommandLine(command, project);
QCOMPARE(ProcessArgs::splitArgs(parser.unparsedArguments()),
ProcessArgs::splitArgs(unparsedArguments));
QCOMPARE(ProcessArgs::splitArgs(parser.unparsedArguments(), HostOsInfo::hostOs()),
ProcessArgs::splitArgs(unparsedArguments, HostOsInfo::hostOs()));
QCOMPARE(parser.effectiveBuildConfig({}), effectiveBuildConfig);
const QMakeStepConfig qmsc = parser.config();

View File

@@ -48,7 +48,7 @@ QnxProcessImpl::QnxProcessImpl(const LinuxDevice *linuxDevice)
QString QnxProcessImpl::fullCommandLine(const CommandLine &commandLine) const
{
QStringList args = ProcessArgs::splitArgs(commandLine.arguments());
QStringList args = ProcessArgs::splitArgs(commandLine.arguments(), HostOsInfo::hostOs());
args.prepend(commandLine.executable().toString());
const QString cmd = ProcessArgs::createUnixArgs(args).toString();

View File

@@ -261,7 +261,7 @@ void MakeInstallStep::updateFromCustomCommandLineAspect()
const StringAspect * const aspect = customCommandLineAspect();
if (!aspect->isChecked())
return;
const QStringList tokens = ProcessArgs::splitArgs(aspect->value());
const QStringList tokens = ProcessArgs::splitArgs(aspect->value(), HostOsInfo::hostOs());
setMakeCommand(tokens.isEmpty() ? FilePath() : FilePath::fromString(tokens.first()));
setUserArguments(ProcessArgs::joinArgs(tokens.mid(1)));
}

View File

@@ -86,7 +86,7 @@ QStringList CallgrindToolRunner::toolArguments() const
arguments << "--callgrind-out-file=" + m_valgrindOutputFile.path();
arguments << ProcessArgs::splitArgs(m_settings.callgrindArguments.value());
arguments << ProcessArgs::splitArgs(m_settings.callgrindArguments.value(), HostOsInfo::hostOs());
return arguments;
}

View File

@@ -214,7 +214,7 @@ QStringList MemcheckToolRunner::toolArguments() const
if (m_withGdb)
arguments << "--vgdb=yes" << "--vgdb-error=0";
arguments << Utils::ProcessArgs::splitArgs(m_settings.memcheckArguments.value());
arguments << ProcessArgs::splitArgs(m_settings.memcheckArguments.value(), HostOsInfo::hostOs());
return arguments;
}