forked from qt-creator/qt-creator
Utils: Move process arguments class out of QtcProcess
The main QtcProcess interface is nowadays a CommandLine, with no explicit references left to QtcProcess::Arguments and related static helper functions, so it only clutters the QtcProcess class interface So move these items out of QtcProcess, later potentially to a separate file pair. Change-Id: I45c300b656f5b30e2e2717232c855fdd97c2d1d7 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -102,7 +102,7 @@ struct SftpSession::SftpSessionPrivate
|
|||||||
|
|
||||||
// The second newline forces the prompt to appear after the command has finished.
|
// The second newline forces the prompt to appear after the command has finished.
|
||||||
sftpProc.write(commandString(activeCommand.type) + ' '
|
sftpProc.write(commandString(activeCommand.type) + ' '
|
||||||
+ QtcProcess::Arguments::createUnixArgs(activeCommand.paths)
|
+ ProcessArgs::createUnixArgs(activeCommand.paths)
|
||||||
.toString().toLocal8Bit() + "\n\n");
|
.toString().toLocal8Bit() + "\n\n");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ void SftpTransfer::doStart()
|
|||||||
for (const QString &dir : d->dirsToCreate()) {
|
for (const QString &dir : d->dirsToCreate()) {
|
||||||
switch (d->transferType) {
|
switch (d->transferType) {
|
||||||
case Internal::FileTransferType::Upload:
|
case Internal::FileTransferType::Upload:
|
||||||
batchFile.write("-mkdir " + QtcProcess::quoteArgUnix(dir).toLocal8Bit() + '\n');
|
batchFile.write("-mkdir " + ProcessArgs::quoteArgUnix(dir).toLocal8Bit() + '\n');
|
||||||
break;
|
break;
|
||||||
case Internal::FileTransferType::Download:
|
case Internal::FileTransferType::Download:
|
||||||
if (!QDir::root().mkpath(dir)) {
|
if (!QDir::root().mkpath(dir)) {
|
||||||
@@ -169,14 +169,14 @@ void SftpTransfer::doStart()
|
|||||||
QFileInfo fi(f.sourceFile);
|
QFileInfo fi(f.sourceFile);
|
||||||
if (fi.isSymLink()) {
|
if (fi.isSymLink()) {
|
||||||
link = true;
|
link = true;
|
||||||
batchFile.write("-rm " + QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit()
|
batchFile.write("-rm " + ProcessArgs::quoteArgUnix(f.targetFile).toLocal8Bit()
|
||||||
+ '\n');
|
+ '\n');
|
||||||
sourceFileOrLinkTarget = fi.dir().relativeFilePath(fi.symLinkTarget()); // see QTBUG-5817.
|
sourceFileOrLinkTarget = fi.dir().relativeFilePath(fi.symLinkTarget()); // see QTBUG-5817.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
batchFile.write(d->transferCommand(link) + ' '
|
batchFile.write(d->transferCommand(link) + ' '
|
||||||
+ QtcProcess::quoteArgUnix(sourceFileOrLinkTarget).toLocal8Bit() + ' '
|
+ ProcessArgs::quoteArgUnix(sourceFileOrLinkTarget).toLocal8Bit() + ' '
|
||||||
+ QtcProcess::quoteArgUnix(f.targetFile).toLocal8Bit() + '\n');
|
+ ProcessArgs::quoteArgUnix(f.targetFile).toLocal8Bit() + '\n');
|
||||||
}
|
}
|
||||||
d->sftpProc.setStandardInputFile(batchFile.fileName());
|
d->sftpProc.setStandardInputFile(batchFile.fileName());
|
||||||
d->sftpProc.start(sftpBinary.toString(), d->connectionArgs);
|
d->sftpProc.start(sftpBinary.toString(), d->connectionArgs);
|
||||||
|
|||||||
@@ -232,11 +232,11 @@ TerminalCommand ConsoleProcess::terminalEmulator(const QSettings *settings)
|
|||||||
const QString value = settings->value("General/TerminalEmulator").toString().trimmed();
|
const QString value = settings->value("General/TerminalEmulator").toString().trimmed();
|
||||||
if (!value.isEmpty()) {
|
if (!value.isEmpty()) {
|
||||||
// split off command and options
|
// split off command and options
|
||||||
const QStringList splitCommand = QtcProcess::splitArgs(value);
|
const QStringList splitCommand = ProcessArgs::splitArgs(value);
|
||||||
if (QTC_GUARD(!splitCommand.isEmpty())) {
|
if (QTC_GUARD(!splitCommand.isEmpty())) {
|
||||||
const QString command = splitCommand.first();
|
const QString command = splitCommand.first();
|
||||||
const QStringList quotedArgs = Utils::transform(splitCommand.mid(1),
|
const QStringList quotedArgs = Utils::transform(splitCommand.mid(1),
|
||||||
&QtcProcess::quoteArgUnix);
|
&ProcessArgs::quoteArgUnix);
|
||||||
const QString options = quotedArgs.join(' ');
|
const QString options = quotedArgs.join(' ');
|
||||||
return {command, "", options};
|
return {command, "", options};
|
||||||
}
|
}
|
||||||
@@ -358,7 +358,7 @@ bool ConsoleProcess::startTerminalEmulator(QSettings *settings, const QString &w
|
|||||||
const TerminalCommand term = terminalEmulator(settings);
|
const TerminalCommand term = terminalEmulator(settings);
|
||||||
QProcess process;
|
QProcess process;
|
||||||
process.setProgram(term.command);
|
process.setProgram(term.command);
|
||||||
process.setArguments(QtcProcess::splitArgs(term.openArgs));
|
process.setArguments(ProcessArgs::splitArgs(term.openArgs));
|
||||||
process.setProcessEnvironment(env.toProcessEnvironment());
|
process.setProcessEnvironment(env.toProcessEnvironment());
|
||||||
process.setWorkingDirectory(workingDir);
|
process.setWorkingDirectory(workingDir);
|
||||||
|
|
||||||
@@ -394,11 +394,11 @@ bool ConsoleProcess::start()
|
|||||||
pcmd = d->m_commandLine.executable().toString();
|
pcmd = d->m_commandLine.executable().toString();
|
||||||
pargs = d->m_commandLine.arguments();
|
pargs = d->m_commandLine.arguments();
|
||||||
} else {
|
} else {
|
||||||
QtcProcess::Arguments outArgs;
|
ProcessArgs outArgs;
|
||||||
QtcProcess::prepareCommand(d->m_commandLine.executable().toString(),
|
ProcessArgs::prepareCommand(d->m_commandLine.executable().toString(),
|
||||||
d->m_commandLine.arguments(),
|
d->m_commandLine.arguments(),
|
||||||
&pcmd, &outArgs, OsTypeWindows,
|
&pcmd, &outArgs, OsTypeWindows,
|
||||||
&d->m_environment, &d->m_workingDir);
|
&d->m_environment, &d->m_workingDir);
|
||||||
pargs = outArgs.toWindowsArgs();
|
pargs = outArgs.toWindowsArgs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,7 +452,7 @@ bool ConsoleProcess::start()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
d->m_tempFile->flush();
|
d->m_tempFile->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
STARTUPINFO si;
|
STARTUPINFO si;
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
@@ -497,19 +497,19 @@ bool ConsoleProcess::start()
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
QtcProcess::SplitError perr;
|
ProcessArgs::SplitError perr;
|
||||||
QtcProcess::Arguments pargs = QtcProcess::prepareArgs(d->m_commandLine.arguments(),
|
ProcessArgs pargs = ProcessArgs::prepareArgs(d->m_commandLine.arguments(),
|
||||||
&perr,
|
&perr,
|
||||||
HostOsInfo::hostOs(),
|
HostOsInfo::hostOs(),
|
||||||
&d->m_environment,
|
&d->m_environment,
|
||||||
&d->m_workingDir,
|
&d->m_workingDir,
|
||||||
d->m_abortOnMetaChars);
|
d->m_abortOnMetaChars);
|
||||||
|
|
||||||
QString pcmd;
|
QString pcmd;
|
||||||
if (perr == QtcProcess::SplitOk) {
|
if (perr == ProcessArgs::SplitOk) {
|
||||||
pcmd = d->m_commandLine.executable().toString();
|
pcmd = d->m_commandLine.executable().toString();
|
||||||
} else {
|
} else {
|
||||||
if (perr != QtcProcess::FoundMeta) {
|
if (perr != ProcessArgs::FoundMeta) {
|
||||||
emitError(QProcess::FailedToStart, tr("Quoting error in command."));
|
emitError(QProcess::FailedToStart, tr("Quoting error in command."));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -520,20 +520,20 @@ bool ConsoleProcess::start()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
pcmd = qEnvironmentVariable("SHELL", "/bin/sh");
|
pcmd = qEnvironmentVariable("SHELL", "/bin/sh");
|
||||||
pargs = QtcProcess::Arguments::createUnixArgs(
|
pargs = ProcessArgs::createUnixArgs(
|
||||||
{"-c", (QtcProcess::quoteArg(d->m_commandLine.executable().toString())
|
{"-c", (ProcessArgs::quoteArg(d->m_commandLine.executable().toString())
|
||||||
+ ' ' + d->m_commandLine.arguments())});
|
+ ' ' + d->m_commandLine.arguments())});
|
||||||
}
|
}
|
||||||
|
|
||||||
QtcProcess::SplitError qerr;
|
ProcessArgs::SplitError qerr;
|
||||||
const TerminalCommand terminal = terminalEmulator(d->m_settings);
|
const TerminalCommand terminal = terminalEmulator(d->m_settings);
|
||||||
const QtcProcess::Arguments terminalArgs = QtcProcess::prepareArgs(terminal.executeArgs,
|
const ProcessArgs terminalArgs = ProcessArgs::prepareArgs(terminal.executeArgs,
|
||||||
&qerr,
|
&qerr,
|
||||||
HostOsInfo::hostOs(),
|
HostOsInfo::hostOs(),
|
||||||
&d->m_environment,
|
&d->m_environment,
|
||||||
&d->m_workingDir);
|
&d->m_workingDir);
|
||||||
if (qerr != QtcProcess::SplitOk) {
|
if (qerr != ProcessArgs::SplitOk) {
|
||||||
emitError(QProcess::FailedToStart, qerr == QtcProcess::BadQuoting
|
emitError(QProcess::FailedToStart, qerr == ProcessArgs::BadQuoting
|
||||||
? tr("Quoting error in terminal command.")
|
? tr("Quoting error in terminal command.")
|
||||||
: tr("Terminal command may not be a shell command."));
|
: tr("Terminal command may not be a shell command."));
|
||||||
return false;
|
return false;
|
||||||
@@ -589,7 +589,7 @@ bool ConsoleProcess::start()
|
|||||||
<< pargs.toUnixArgs();
|
<< pargs.toUnixArgs();
|
||||||
|
|
||||||
if (terminal.needsQuotes)
|
if (terminal.needsQuotes)
|
||||||
allArgs = QStringList { QtcProcess::joinArgs(allArgs) };
|
allArgs = QStringList { ProcessArgs::joinArgs(allArgs) };
|
||||||
|
|
||||||
d->m_process.setEnvironment(env);
|
d->m_process.setEnvironment(env);
|
||||||
d->m_process.start(terminal.command, allArgs);
|
d->m_process.start(terminal.command, allArgs);
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ CommandLine::CommandLine(const FilePath &exe, const QString &args, RawType)
|
|||||||
|
|
||||||
void CommandLine::addArg(const QString &arg, OsType osType)
|
void CommandLine::addArg(const QString &arg, OsType osType)
|
||||||
{
|
{
|
||||||
QtcProcess::addArg(&m_arguments, arg, osType);
|
ProcessArgs::addArg(&m_arguments, arg, osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommandLine::addArgs(const QStringList &inArgs, OsType osType)
|
void CommandLine::addArgs(const QStringList &inArgs, OsType osType)
|
||||||
@@ -119,7 +119,7 @@ void CommandLine::addArgs(const CommandLine &cmd, OsType osType)
|
|||||||
|
|
||||||
void CommandLine::addArgs(const QString &inArgs, RawType)
|
void CommandLine::addArgs(const QString &inArgs, RawType)
|
||||||
{
|
{
|
||||||
QtcProcess::addArgs(&m_arguments, inArgs);
|
ProcessArgs::addArgs(&m_arguments, inArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CommandLine::toUserOutput() const
|
QString CommandLine::toUserOutput() const
|
||||||
@@ -132,7 +132,7 @@ QString CommandLine::toUserOutput() const
|
|||||||
|
|
||||||
QStringList CommandLine::splitArguments(OsType osType) const
|
QStringList CommandLine::splitArguments(OsType osType) const
|
||||||
{
|
{
|
||||||
return QtcProcess::splitArgs(m_arguments, osType);
|
return ProcessArgs::splitArgs(m_arguments, osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \class Utils::FileUtils
|
/*! \class Utils::FileUtils
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ QVariant MacroExpander::expandVariant(const QVariant &v) const
|
|||||||
|
|
||||||
QString MacroExpander::expandProcessArgs(const QString &argsWithVariables) const
|
QString MacroExpander::expandProcessArgs(const QString &argsWithVariables) const
|
||||||
{
|
{
|
||||||
return QtcProcess::expandMacros(argsWithVariables, d);
|
return ProcessArgs::expandMacros(argsWithVariables, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QByteArray fullPrefix(const QByteArray &prefix)
|
static QByteArray fullPrefix(const QByteArray &prefix)
|
||||||
|
|||||||
@@ -136,8 +136,8 @@ static void envExpandWin(QString &args, const Environment *env, const QString *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static QtcProcess::Arguments prepareArgsWin(const QString &_args, QtcProcess::SplitError *err,
|
static ProcessArgs prepareArgsWin(const QString &_args, ProcessArgs::SplitError *err,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const QString *pwd)
|
||||||
{
|
{
|
||||||
QString args(_args);
|
QString args(_args);
|
||||||
|
|
||||||
@@ -146,8 +146,8 @@ static QtcProcess::Arguments prepareArgsWin(const QString &_args, QtcProcess::Sp
|
|||||||
} else {
|
} else {
|
||||||
if (args.indexOf(QLatin1Char('%')) >= 0) {
|
if (args.indexOf(QLatin1Char('%')) >= 0) {
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::FoundMeta;
|
*err = ProcessArgs::FoundMeta;
|
||||||
return QtcProcess::Arguments::createWindowsArgs(QString());
|
return ProcessArgs::createWindowsArgs(QString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,14 +165,14 @@ static QtcProcess::Arguments prepareArgsWin(const QString &_args, QtcProcess::Sp
|
|||||||
} while (args.unicode()[p].unicode() != '"');
|
} while (args.unicode()[p].unicode() != '"');
|
||||||
} else if (isMetaCharWin(c)) {
|
} else if (isMetaCharWin(c)) {
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::FoundMeta;
|
*err = ProcessArgs::FoundMeta;
|
||||||
return QtcProcess::Arguments::createWindowsArgs(QString());
|
return ProcessArgs::createWindowsArgs(QString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::SplitOk;
|
*err = ProcessArgs::SplitOk;
|
||||||
return QtcProcess::Arguments::createWindowsArgs(args);
|
return ProcessArgs::createWindowsArgs(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static bool isWhiteSpaceWin(ushort c)
|
inline static bool isWhiteSpaceWin(ushort c)
|
||||||
@@ -180,12 +180,12 @@ inline static bool isWhiteSpaceWin(ushort c)
|
|||||||
return c == ' ' || c == '\t';
|
return c == ' ' || c == '\t';
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList doSplitArgsWin(const QString &args, QtcProcess::SplitError *err)
|
static QStringList doSplitArgsWin(const QString &args, ProcessArgs::SplitError *err)
|
||||||
{
|
{
|
||||||
QStringList ret;
|
QStringList ret;
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::SplitOk;
|
*err = ProcessArgs::SplitOk;
|
||||||
|
|
||||||
int p = 0;
|
int p = 0;
|
||||||
const int length = args.length();
|
const int length = args.length();
|
||||||
@@ -239,7 +239,7 @@ static QStringList doSplitArgsWin(const QString &args, QtcProcess::SplitError *e
|
|||||||
ret.append(arg);
|
ret.append(arg);
|
||||||
if (inquote) {
|
if (inquote) {
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::BadQuoting;
|
*err = ProcessArgs::BadQuoting;
|
||||||
return QStringList();
|
return QStringList();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -314,15 +314,15 @@ static QStringList doSplitArgsWin(const QString &args, QtcProcess::SplitError *e
|
|||||||
|
|
||||||
|
|
||||||
static QStringList splitArgsWin(const QString &_args, bool abortOnMeta,
|
static QStringList splitArgsWin(const QString &_args, bool abortOnMeta,
|
||||||
QtcProcess::SplitError *err,
|
ProcessArgs::SplitError *err,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const QString *pwd)
|
||||||
{
|
{
|
||||||
if (abortOnMeta) {
|
if (abortOnMeta) {
|
||||||
QtcProcess::SplitError perr;
|
ProcessArgs::SplitError perr;
|
||||||
if (!err)
|
if (!err)
|
||||||
err = &perr;
|
err = &perr;
|
||||||
QString args = prepareArgsWin(_args, &perr, env, pwd).toWindowsArgs();
|
QString args = prepareArgsWin(_args, &perr, env, pwd).toWindowsArgs();
|
||||||
if (*err != QtcProcess::SplitOk)
|
if (*err != ProcessArgs::SplitOk)
|
||||||
return QStringList();
|
return QStringList();
|
||||||
return doSplitArgsWin(args, err);
|
return doSplitArgsWin(args, err);
|
||||||
} else {
|
} else {
|
||||||
@@ -347,7 +347,7 @@ static bool isMetaUnix(QChar cUnicode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static QStringList splitArgsUnix(const QString &args, bool abortOnMeta,
|
static QStringList splitArgsUnix(const QString &args, bool abortOnMeta,
|
||||||
QtcProcess::SplitError *err,
|
ProcessArgs::SplitError *err,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const QString *pwd)
|
||||||
{
|
{
|
||||||
static const QString pwdName = QLatin1String("PWD");
|
static const QString pwdName = QLatin1String("PWD");
|
||||||
@@ -522,17 +522,17 @@ static QStringList splitArgsUnix(const QString &args, bool abortOnMeta,
|
|||||||
|
|
||||||
okret:
|
okret:
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::SplitOk;
|
*err = ProcessArgs::SplitOk;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
quoteerr:
|
quoteerr:
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::BadQuoting;
|
*err = ProcessArgs::BadQuoting;
|
||||||
return QStringList();
|
return QStringList();
|
||||||
|
|
||||||
metaerr:
|
metaerr:
|
||||||
if (err)
|
if (err)
|
||||||
*err = QtcProcess::FoundMeta;
|
*err = ProcessArgs::FoundMeta;
|
||||||
return QStringList();
|
return QStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,9 +555,9 @@ inline static bool hasSpecialCharsUnix(const QString &arg)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList QtcProcess::splitArgs(const QString &args, OsType osType,
|
QStringList ProcessArgs::splitArgs(const QString &args, OsType osType,
|
||||||
bool abortOnMeta, QtcProcess::SplitError *err,
|
bool abortOnMeta, ProcessArgs::SplitError *err,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const QString *pwd)
|
||||||
{
|
{
|
||||||
if (osType == OsTypeWindows)
|
if (osType == OsTypeWindows)
|
||||||
return splitArgsWin(args, abortOnMeta, err, env, pwd);
|
return splitArgsWin(args, abortOnMeta, err, env, pwd);
|
||||||
@@ -565,7 +565,7 @@ QStringList QtcProcess::splitArgs(const QString &args, OsType osType,
|
|||||||
return splitArgsUnix(args, abortOnMeta, err, env, pwd);
|
return splitArgsUnix(args, abortOnMeta, err, env, pwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtcProcess::quoteArgUnix(const QString &arg)
|
QString ProcessArgs::quoteArgUnix(const QString &arg)
|
||||||
{
|
{
|
||||||
if (arg.isEmpty())
|
if (arg.isEmpty())
|
||||||
return QString::fromLatin1("''");
|
return QString::fromLatin1("''");
|
||||||
@@ -626,17 +626,17 @@ static QString quoteArgWin(const QString &arg)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
QtcProcess::Arguments QtcProcess::prepareArgs(const QString &cmd, SplitError *err, OsType osType,
|
ProcessArgs ProcessArgs::prepareArgs(const QString &cmd, SplitError *err, OsType osType,
|
||||||
const Environment *env, const QString *pwd, bool abortOnMeta)
|
const Environment *env, const QString *pwd, bool abortOnMeta)
|
||||||
{
|
{
|
||||||
if (osType == OsTypeWindows)
|
if (osType == OsTypeWindows)
|
||||||
return prepareArgsWin(cmd, err, env, pwd);
|
return prepareArgsWin(cmd, err, env, pwd);
|
||||||
else
|
else
|
||||||
return Arguments::createUnixArgs(splitArgs(cmd, osType, abortOnMeta, err, env, pwd));
|
return createUnixArgs(splitArgs(cmd, osType, abortOnMeta, err, env, pwd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString QtcProcess::quoteArg(const QString &arg, OsType osType)
|
QString ProcessArgs::quoteArg(const QString &arg, OsType osType)
|
||||||
{
|
{
|
||||||
if (osType == OsTypeWindows)
|
if (osType == OsTypeWindows)
|
||||||
return quoteArgWin(arg);
|
return quoteArgWin(arg);
|
||||||
@@ -644,14 +644,14 @@ QString QtcProcess::quoteArg(const QString &arg, OsType osType)
|
|||||||
return quoteArgUnix(arg);
|
return quoteArgUnix(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtcProcess::addArg(QString *args, const QString &arg, OsType osType)
|
void ProcessArgs::addArg(QString *args, const QString &arg, OsType osType)
|
||||||
{
|
{
|
||||||
if (!args->isEmpty())
|
if (!args->isEmpty())
|
||||||
*args += QLatin1Char(' ');
|
*args += QLatin1Char(' ');
|
||||||
*args += quoteArg(arg, osType);
|
*args += quoteArg(arg, osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtcProcess::joinArgs(const QStringList &args, OsType osType)
|
QString ProcessArgs::joinArgs(const QStringList &args, OsType osType)
|
||||||
{
|
{
|
||||||
QString ret;
|
QString ret;
|
||||||
for (const QString &arg : args)
|
for (const QString &arg : args)
|
||||||
@@ -659,7 +659,7 @@ QString QtcProcess::joinArgs(const QStringList &args, OsType osType)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtcProcess::addArgs(QString *args, const QString &inArgs)
|
void ProcessArgs::addArgs(QString *args, const QString &inArgs)
|
||||||
{
|
{
|
||||||
if (!inArgs.isEmpty()) {
|
if (!inArgs.isEmpty()) {
|
||||||
if (!args->isEmpty())
|
if (!args->isEmpty())
|
||||||
@@ -668,28 +668,28 @@ void QtcProcess::addArgs(QString *args, const QString &inArgs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtcProcess::addArgs(QString *args, const QStringList &inArgs)
|
void ProcessArgs::addArgs(QString *args, const QStringList &inArgs)
|
||||||
{
|
{
|
||||||
for (const QString &arg : inArgs)
|
for (const QString &arg : inArgs)
|
||||||
addArg(args, arg);
|
addArg(args, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtcProcess::prepareCommand(const QString &command, const QString &arguments,
|
bool ProcessArgs::prepareCommand(const QString &command, const QString &arguments,
|
||||||
QString *outCmd, Arguments *outArgs, OsType osType,
|
QString *outCmd, ProcessArgs *outArgs, OsType osType,
|
||||||
const Environment *env, const QString *pwd)
|
const Environment *env, const QString *pwd)
|
||||||
{
|
{
|
||||||
QtcProcess::SplitError err;
|
ProcessArgs::SplitError err;
|
||||||
*outArgs = QtcProcess::prepareArgs(arguments, &err, osType, env, pwd);
|
*outArgs = ProcessArgs::prepareArgs(arguments, &err, osType, env, pwd);
|
||||||
if (err == QtcProcess::SplitOk) {
|
if (err == ProcessArgs::SplitOk) {
|
||||||
*outCmd = command;
|
*outCmd = command;
|
||||||
} else {
|
} else {
|
||||||
if (osType == OsTypeWindows) {
|
if (osType == OsTypeWindows) {
|
||||||
*outCmd = QString::fromLatin1(qgetenv("COMSPEC"));
|
*outCmd = QString::fromLatin1(qgetenv("COMSPEC"));
|
||||||
*outArgs = Arguments::createWindowsArgs(QLatin1String("/v:off /s /c \"")
|
*outArgs = ProcessArgs::createWindowsArgs(QLatin1String("/v:off /s /c \"")
|
||||||
+ quoteArg(QDir::toNativeSeparators(command)) + QLatin1Char(' ') + arguments
|
+ quoteArg(QDir::toNativeSeparators(command)) + QLatin1Char(' ') + arguments
|
||||||
+ QLatin1Char('"'));
|
+ QLatin1Char('"'));
|
||||||
} else {
|
} else {
|
||||||
if (err != QtcProcess::FoundMeta)
|
if (err != ProcessArgs::FoundMeta)
|
||||||
return false;
|
return false;
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
||||||
*outCmd = qEnvironmentVariable("SHELL", "/bin/sh");
|
*outCmd = qEnvironmentVariable("SHELL", "/bin/sh");
|
||||||
@@ -698,7 +698,7 @@ bool QtcProcess::prepareCommand(const QString &command, const QString &arguments
|
|||||||
*outCmd = qEnvironmentVariableIsSet("SHELL") ? QString::fromLocal8Bit(qgetenv("SHELL"))
|
*outCmd = qEnvironmentVariableIsSet("SHELL") ? QString::fromLocal8Bit(qgetenv("SHELL"))
|
||||||
: QString("/bin/sh");
|
: QString("/bin/sh");
|
||||||
#endif
|
#endif
|
||||||
*outArgs = Arguments::createUnixArgs(
|
*outArgs = ProcessArgs::createUnixArgs(
|
||||||
QStringList({"-c", (quoteArg(command) + ' ' + arguments)}));
|
QStringList({"-c", (quoteArg(command) + ' ' + arguments)}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -853,16 +853,16 @@ void QtcProcess::start()
|
|||||||
|
|
||||||
const QString &workDir = workingDirectory();
|
const QString &workDir = workingDirectory();
|
||||||
QString command;
|
QString command;
|
||||||
QtcProcess::Arguments arguments;
|
ProcessArgs arguments;
|
||||||
bool success = prepareCommand(d->m_commandLine.executable().toString(),
|
bool success = ProcessArgs::prepareCommand(d->m_commandLine.executable().toString(),
|
||||||
d->m_commandLine.arguments(),
|
d->m_commandLine.arguments(),
|
||||||
&command, &arguments, osType, &env, &workDir);
|
&command, &arguments, osType, &env, &workDir);
|
||||||
if (osType == OsTypeWindows) {
|
if (osType == OsTypeWindows) {
|
||||||
QString args;
|
QString args;
|
||||||
if (d->m_useCtrlCStub) {
|
if (d->m_useCtrlCStub) {
|
||||||
if (d->m_lowPriority)
|
if (d->m_lowPriority)
|
||||||
addArg(&args, "-nice");
|
ProcessArgs::addArg(&args, "-nice");
|
||||||
addArg(&args, QDir::toNativeSeparators(command));
|
ProcessArgs::addArg(&args, QDir::toNativeSeparators(command));
|
||||||
command = QCoreApplication::applicationDirPath()
|
command = QCoreApplication::applicationDirPath()
|
||||||
+ QLatin1String("/qtcreator_ctrlc_stub.exe");
|
+ QLatin1String("/qtcreator_ctrlc_stub.exe");
|
||||||
} else if (d->m_lowPriority) {
|
} else if (d->m_lowPriority) {
|
||||||
@@ -872,7 +872,7 @@ void QtcProcess::start()
|
|||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
QtcProcess::addArgs(&args, arguments.toWindowsArgs());
|
ProcessArgs::addArgs(&args, arguments.toWindowsArgs());
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
setNativeArguments(args);
|
setNativeArguments(args);
|
||||||
#endif
|
#endif
|
||||||
@@ -1046,7 +1046,7 @@ static int quoteArgInternalWin(QString &ret, int bslashes)
|
|||||||
* \return false if the string could not be parsed and therefore no safe
|
* \return false if the string could not be parsed and therefore no safe
|
||||||
* substitution was possible
|
* substitution was possible
|
||||||
*/
|
*/
|
||||||
bool QtcProcess::expandMacros(QString *cmd, AbstractMacroExpander *mx, OsType osType)
|
bool ProcessArgs::expandMacros(QString *cmd, AbstractMacroExpander *mx, OsType osType)
|
||||||
{
|
{
|
||||||
QString str = *cmd;
|
QString str = *cmd;
|
||||||
if (str.isEmpty())
|
if (str.isEmpty())
|
||||||
@@ -1180,7 +1180,7 @@ bool QtcProcess::expandMacros(QString *cmd, AbstractMacroExpander *mx, OsType os
|
|||||||
break;
|
break;
|
||||||
case CrtClosed:
|
case CrtClosed:
|
||||||
// Two consecutive quotes make a literal quote - and
|
// Two consecutive quotes make a literal quote - and
|
||||||
// still close quoting. See QtcProcess::quoteArg().
|
// still close quoting. See quoteArg().
|
||||||
crtState = CrtInWord;
|
crtState = CrtInWord;
|
||||||
break;
|
break;
|
||||||
case CrtHadQuote:
|
case CrtHadQuote:
|
||||||
@@ -1370,7 +1370,7 @@ bool QtcProcess::expandMacros(QString *cmd, AbstractMacroExpander *mx, OsType os
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtcProcess::expandMacros(const QString &str, AbstractMacroExpander *mx, OsType osType)
|
QString ProcessArgs::expandMacros(const QString &str, AbstractMacroExpander *mx, OsType osType)
|
||||||
{
|
{
|
||||||
QString ret = str;
|
QString ret = str;
|
||||||
expandMacros(&ret, mx, osType);
|
expandMacros(&ret, mx, osType);
|
||||||
@@ -1506,7 +1506,7 @@ bool QtcProcess::readDataFromProcess(int timeoutS,
|
|||||||
return finished;
|
return finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtcProcess::ArgIterator::next()
|
bool ProcessArgs::ArgIterator::next()
|
||||||
{
|
{
|
||||||
// We delay the setting of m_prev so we can still delete the last argument
|
// We delay the setting of m_prev so we can still delete the last argument
|
||||||
// after we find that there are no more arguments. It's a bit of a hack ...
|
// after we find that there are no more arguments. It's a bit of a hack ...
|
||||||
@@ -1775,7 +1775,7 @@ QString QtcProcess::normalizeNewlines(const QString &text)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtcProcess::ArgIterator::deleteArg()
|
void ProcessArgs::ArgIterator::deleteArg()
|
||||||
{
|
{
|
||||||
if (!m_prev)
|
if (!m_prev)
|
||||||
while (m_pos < m_str->length() && m_str->at(m_pos).isSpace())
|
while (m_pos < m_str->length() && m_str->at(m_pos).isSpace())
|
||||||
@@ -1784,7 +1784,7 @@ void QtcProcess::ArgIterator::deleteArg()
|
|||||||
m_pos = m_prev;
|
m_pos = m_prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtcProcess::ArgIterator::appendArg(const QString &str)
|
void ProcessArgs::ArgIterator::appendArg(const QString &str)
|
||||||
{
|
{
|
||||||
const QString qstr = quoteArg(str);
|
const QString qstr = quoteArg(str);
|
||||||
if (!m_pos)
|
if (!m_pos)
|
||||||
@@ -1794,40 +1794,40 @@ void QtcProcess::ArgIterator::appendArg(const QString &str)
|
|||||||
m_pos += qstr.length() + 1;
|
m_pos += qstr.length() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
QtcProcess::Arguments QtcProcess::Arguments::createWindowsArgs(const QString &args)
|
ProcessArgs ProcessArgs::createWindowsArgs(const QString &args)
|
||||||
{
|
{
|
||||||
Arguments result;
|
ProcessArgs result;
|
||||||
result.m_windowsArgs = args;
|
result.m_windowsArgs = args;
|
||||||
result.m_isWindows = true;
|
result.m_isWindows = true;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QtcProcess::Arguments QtcProcess::Arguments::createUnixArgs(const QStringList &args)
|
ProcessArgs ProcessArgs::createUnixArgs(const QStringList &args)
|
||||||
{
|
{
|
||||||
Arguments result;
|
ProcessArgs result;
|
||||||
result.m_unixArgs = args;
|
result.m_unixArgs = args;
|
||||||
result.m_isWindows = false;
|
result.m_isWindows = false;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtcProcess::Arguments::toWindowsArgs() const
|
QString ProcessArgs::toWindowsArgs() const
|
||||||
{
|
{
|
||||||
QTC_CHECK(m_isWindows);
|
QTC_CHECK(m_isWindows);
|
||||||
return m_windowsArgs;
|
return m_windowsArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList QtcProcess::Arguments::toUnixArgs() const
|
QStringList ProcessArgs::toUnixArgs() const
|
||||||
{
|
{
|
||||||
QTC_CHECK(!m_isWindows);
|
QTC_CHECK(!m_isWindows);
|
||||||
return m_unixArgs;
|
return m_unixArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtcProcess::Arguments::toString() const
|
QString ProcessArgs::toString() const
|
||||||
{
|
{
|
||||||
if (m_isWindows)
|
if (m_isWindows)
|
||||||
return m_windowsArgs;
|
return m_windowsArgs;
|
||||||
else
|
else
|
||||||
return QtcProcess::joinArgs(m_unixArgs, OsTypeLinux);
|
return ProcessArgs::joinArgs(m_unixArgs, OsTypeLinux);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path utilities
|
// Path utilities
|
||||||
|
|||||||
+56
-56
@@ -119,21 +119,56 @@ public:
|
|||||||
void setStdOutCallback(const std::function<void(const QString &)> &callback);
|
void setStdOutCallback(const std::function<void(const QString &)> &callback);
|
||||||
void setStdErrCallback(const std::function<void(const QString &)> &callback);
|
void setStdErrCallback(const std::function<void(const QString &)> &callback);
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT Arguments
|
static void setRemoteStartProcessHook(const std::function<void (QtcProcess &)> &hook);
|
||||||
{
|
|
||||||
public:
|
|
||||||
static Arguments createWindowsArgs(const QString &args);
|
|
||||||
static Arguments createUnixArgs(const QStringList &args);
|
|
||||||
|
|
||||||
QString toWindowsArgs() const;
|
bool isSynchronous() const;
|
||||||
QStringList toUnixArgs() const;
|
void setSynchronous(bool on);
|
||||||
QString toString() const;
|
|
||||||
|
|
||||||
private:
|
void setOpenMode(OpenMode mode);
|
||||||
QString m_windowsArgs;
|
|
||||||
QStringList m_unixArgs;
|
bool stopProcess();
|
||||||
bool m_isWindows;
|
bool readDataFromProcess(int timeoutS, QByteArray *stdOut, QByteArray *stdErr,
|
||||||
};
|
bool showTimeOutMessageBox);
|
||||||
|
|
||||||
|
static QString normalizeNewlines(const QString &text);
|
||||||
|
|
||||||
|
// Helpers to find binaries. Do not use it for other path variables
|
||||||
|
// and file types.
|
||||||
|
static QString locateBinary(const QString &binary);
|
||||||
|
static QString locateBinary(const QString &path, const QString &binary);
|
||||||
|
|
||||||
|
private:
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||||
|
void setupChildProcess() override;
|
||||||
|
#endif
|
||||||
|
friend class SynchronousProcess;
|
||||||
|
Internal::QtcProcessPrivate *d = nullptr;
|
||||||
|
|
||||||
|
void setProcessEnvironment(const QProcessEnvironment &environment) = delete;
|
||||||
|
QProcessEnvironment processEnvironment() const = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const SynchronousProcessResponse &);
|
||||||
|
|
||||||
|
QTCREATOR_UTILS_EXPORT SynchronousProcessResponse::Result defaultExitCodeInterpreter(int code);
|
||||||
|
|
||||||
|
class QTCREATOR_UTILS_EXPORT SynchronousProcess : public QtcProcess
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
SynchronousProcess();
|
||||||
|
~SynchronousProcess() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QTCREATOR_UTILS_EXPORT ProcessArgs
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static ProcessArgs createWindowsArgs(const QString &args);
|
||||||
|
static ProcessArgs createUnixArgs(const QStringList &args);
|
||||||
|
|
||||||
|
QString toWindowsArgs() const;
|
||||||
|
QStringList toUnixArgs() const;
|
||||||
|
QString toString() const;
|
||||||
|
|
||||||
enum SplitError {
|
enum SplitError {
|
||||||
SplitOk = 0, //! All went just fine
|
SplitOk = 0, //! All went just fine
|
||||||
@@ -150,13 +185,13 @@ public:
|
|||||||
//! Join an argument list into a shell command
|
//! Join an argument list into a shell command
|
||||||
static QString joinArgs(const QStringList &args, OsType osType = HostOsInfo::hostOs());
|
static QString joinArgs(const QStringList &args, OsType osType = HostOsInfo::hostOs());
|
||||||
//! Prepare argument of a shell command for feeding into QProcess
|
//! Prepare argument of a shell command for feeding into QProcess
|
||||||
static Arguments prepareArgs(const QString &cmd, SplitError *err,
|
static ProcessArgs prepareArgs(const QString &cmd, SplitError *err,
|
||||||
OsType osType = HostOsInfo::hostOs(),
|
OsType osType = HostOsInfo::hostOs(),
|
||||||
const Environment *env = nullptr, const QString *pwd = nullptr,
|
const Environment *env = nullptr, const QString *pwd = nullptr,
|
||||||
bool abortOnMeta = true);
|
bool abortOnMeta = true);
|
||||||
//! Prepare a shell command for feeding into QProcess
|
//! Prepare a shell command for feeding into QProcess
|
||||||
static bool prepareCommand(const QString &command, const QString &arguments,
|
static bool prepareCommand(const QString &command, const QString &arguments,
|
||||||
QString *outCmd, Arguments *outArgs, OsType osType = HostOsInfo::hostOs(),
|
QString *outCmd, ProcessArgs *outArgs, OsType osType = HostOsInfo::hostOs(),
|
||||||
const Environment *env = nullptr, const QString *pwd = nullptr);
|
const Environment *env = nullptr, const QString *pwd = nullptr);
|
||||||
//! Quote and append each argument to a shell command
|
//! Quote and append each argument to a shell command
|
||||||
static void addArgs(QString *args, const QStringList &inArgs);
|
static void addArgs(QString *args, const QStringList &inArgs);
|
||||||
@@ -213,45 +248,10 @@ public:
|
|||||||
ArgIterator m_ait;
|
ArgIterator m_ait;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void setRemoteStartProcessHook(const std::function<void (QtcProcess &)> &hook);
|
|
||||||
|
|
||||||
bool isSynchronous() const;
|
|
||||||
void setSynchronous(bool on);
|
|
||||||
|
|
||||||
void setOpenMode(OpenMode mode);
|
|
||||||
|
|
||||||
bool stopProcess();
|
|
||||||
bool readDataFromProcess(int timeoutS, QByteArray *stdOut, QByteArray *stdErr,
|
|
||||||
bool showTimeOutMessageBox);
|
|
||||||
|
|
||||||
static QString normalizeNewlines(const QString &text);
|
|
||||||
|
|
||||||
// Helpers to find binaries. Do not use it for other path variables
|
|
||||||
// and file types.
|
|
||||||
static QString locateBinary(const QString &binary);
|
|
||||||
static QString locateBinary(const QString &path, const QString &binary);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
QString m_windowsArgs;
|
||||||
void setupChildProcess() override;
|
QStringList m_unixArgs;
|
||||||
#endif
|
bool m_isWindows;
|
||||||
friend class SynchronousProcess;
|
|
||||||
Internal::QtcProcessPrivate *d = nullptr;
|
|
||||||
|
|
||||||
void setProcessEnvironment(const QProcessEnvironment &environment) = delete;
|
|
||||||
QProcessEnvironment processEnvironment() const = delete;
|
|
||||||
};
|
|
||||||
|
|
||||||
QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const SynchronousProcessResponse &);
|
|
||||||
|
|
||||||
QTCREATOR_UTILS_EXPORT SynchronousProcessResponse::Result defaultExitCodeInterpreter(int code);
|
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT SynchronousProcess : public QtcProcess
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
SynchronousProcess();
|
|
||||||
~SynchronousProcess() override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ bool AndroidPackageInstallationStep::init()
|
|||||||
QTC_ASSERT(tc, return false);
|
QTC_ASSERT(tc, return false);
|
||||||
|
|
||||||
QString dirPath = nativeAndroidBuildPath();
|
QString dirPath = nativeAndroidBuildPath();
|
||||||
const QString innerQuoted = QtcProcess::quoteArg(dirPath);
|
const QString innerQuoted = ProcessArgs::quoteArg(dirPath);
|
||||||
const QString outerQuoted = QtcProcess::quoteArg("INSTALL_ROOT=" + innerQuoted);
|
const QString outerQuoted = ProcessArgs::quoteArg("INSTALL_ROOT=" + innerQuoted);
|
||||||
|
|
||||||
CommandLine cmd{tc->makeCommand(buildEnvironment())};
|
CommandLine cmd{tc->makeCommand(buildEnvironment())};
|
||||||
cmd.addArgs(outerQuoted + " install", CommandLine::Raw);
|
cmd.addArgs(outerQuoted + " install", CommandLine::Raw);
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
|
|||||||
if (auto aspect = runControl->aspect(Constants::ANDROID_AMSTARTARGS)) {
|
if (auto aspect = runControl->aspect(Constants::ANDROID_AMSTARTARGS)) {
|
||||||
QTC_CHECK(aspect->value().type() == QVariant::String);
|
QTC_CHECK(aspect->value().type() == QVariant::String);
|
||||||
const QString startArgs = aspect->value().toString();
|
const QString startArgs = aspect->value().toString();
|
||||||
m_amStartExtraArgs = QtcProcess::splitArgs(startArgs, OsTypeOtherUnix);
|
m_amStartExtraArgs = ProcessArgs::splitArgs(startArgs, OsTypeOtherUnix);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto aspect = runControl->aspect(Constants::ANDROID_PRESTARTSHELLCMDLIST)) {
|
if (auto aspect = runControl->aspect(Constants::ANDROID_PRESTARTSHELLCMDLIST)) {
|
||||||
@@ -633,7 +633,7 @@ void AndroidRunnerWorker::asyncStartHelper()
|
|||||||
|
|
||||||
if (!m_extraAppParams.isEmpty()) {
|
if (!m_extraAppParams.isEmpty()) {
|
||||||
QStringList appArgs =
|
QStringList appArgs =
|
||||||
Utils::QtcProcess::splitArgs(m_extraAppParams, Utils::OsType::OsTypeLinux);
|
Utils::ProcessArgs::splitArgs(m_extraAppParams, Utils::OsType::OsTypeLinux);
|
||||||
qCDebug(androidRunWorkerLog) << "Using application arguments: " << appArgs;
|
qCDebug(androidRunWorkerLog) << "Using application arguments: " << appArgs;
|
||||||
args << "-e" << "extraappparams"
|
args << "-e" << "extraappparams"
|
||||||
<< QString::fromLatin1(appArgs.join(' ').toUtf8().toBase64());
|
<< QString::fromLatin1(appArgs.join(' ').toUtf8().toBase64());
|
||||||
|
|||||||
@@ -825,7 +825,7 @@ void AndroidSettingsWidget::editEmulatorArgsAVD()
|
|||||||
if (dialog.exec() != QDialog::Accepted)
|
if (dialog.exec() != QDialog::Accepted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_androidConfig.setEmulatorArgs(QtcProcess::splitArgs(dialog.textValue()));
|
m_androidConfig.setEmulatorArgs(ProcessArgs::splitArgs(dialog.textValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidSettingsWidget::createKitToggled()
|
void AndroidSettingsWidget::createKitToggled()
|
||||||
|
|||||||
@@ -641,7 +641,7 @@ void TestRunner::debugTests()
|
|||||||
inferior.executable = FilePath::fromString(commandFilePath);
|
inferior.executable = FilePath::fromString(commandFilePath);
|
||||||
|
|
||||||
const QStringList args = config->argumentsForTestRunner(&omitted);
|
const QStringList args = config->argumentsForTestRunner(&omitted);
|
||||||
inferior.commandLineArguments = Utils::QtcProcess::joinArgs(args);
|
inferior.commandLineArguments = Utils::ProcessArgs::joinArgs(args);
|
||||||
if (!omitted.isEmpty()) {
|
if (!omitted.isEmpty()) {
|
||||||
const QString &details = constructOmittedDetailsString(omitted);
|
const QString &details = constructOmittedDetailsString(omitted);
|
||||||
reportResult(ResultType::MessageWarn, details.arg(config->displayName()));
|
reportResult(ResultType::MessageWarn, details.arg(config->displayName()));
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ QStringList MakefileParser::parseTermsAfterAssign(const QString &line)
|
|||||||
if (assignPos <= 0 || assignPos >= line.size())
|
if (assignPos <= 0 || assignPos >= line.size())
|
||||||
return QStringList();
|
return QStringList();
|
||||||
|
|
||||||
const QStringList parts = Utils::QtcProcess::splitArgs(line.mid(assignPos));
|
const QStringList parts = Utils::ProcessArgs::splitArgs(line.mid(assignPos));
|
||||||
QStringList result;
|
QStringList result;
|
||||||
for (int i = 0; i < parts.count(); ++i) {
|
for (int i = 0; i < parts.count(); ++i) {
|
||||||
const QString cur = parts.at(i);
|
const QString cur = parts.at(i);
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ QString OpenOcdGdbServerProvider::channelString() const
|
|||||||
// otherwise running will be stuck.
|
// otherwise running will be stuck.
|
||||||
CommandLine cmd = command();
|
CommandLine cmd = command();
|
||||||
QStringList args = {"|", cmd.executable().toString()};
|
QStringList args = {"|", cmd.executable().toString()};
|
||||||
for (const QString &a : QtcProcess::splitArgs(cmd.arguments())) {
|
for (const QString &a : ProcessArgs::splitArgs(cmd.arguments())) {
|
||||||
if (a.startsWith('\"') && a.endsWith('\"'))
|
if (a.startsWith('\"') && a.endsWith('\"'))
|
||||||
args << a;
|
args << a;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ IarToolChainConfigWidget::IarToolChainConfigWidget(IarToolChain *tc) :
|
|||||||
m_compilerCommand->setHistoryCompleter("PE.IAREW.Command.History");
|
m_compilerCommand->setHistoryCompleter("PE.IAREW.Command.History");
|
||||||
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
||||||
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->extraCodeModelFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->extraCodeModelFlags()));
|
||||||
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
||||||
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
||||||
|
|
||||||
@@ -609,7 +609,7 @@ bool IarToolChainConfigWidget::isDirtyImpl() const
|
|||||||
{
|
{
|
||||||
const auto tc = static_cast<IarToolChain *>(toolChain());
|
const auto tc = static_cast<IarToolChain *>(toolChain());
|
||||||
return m_compilerCommand->filePath() != tc->compilerCommand()
|
return m_compilerCommand->filePath() != tc->compilerCommand()
|
||||||
|| m_platformCodeGenFlagsLineEdit->text() != QtcProcess::joinArgs(tc->extraCodeModelFlags())
|
|| m_platformCodeGenFlagsLineEdit->text() != ProcessArgs::joinArgs(tc->extraCodeModelFlags())
|
||||||
|| m_abiWidget->currentAbi() != tc->targetAbi()
|
|| m_abiWidget->currentAbi() != tc->targetAbi()
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@@ -626,7 +626,7 @@ void IarToolChainConfigWidget::setFromToolchain()
|
|||||||
const QSignalBlocker blocker(this);
|
const QSignalBlocker blocker(this);
|
||||||
const auto tc = static_cast<IarToolChain *>(toolChain());
|
const auto tc = static_cast<IarToolChain *>(toolChain());
|
||||||
m_compilerCommand->setFilePath(tc->compilerCommand());
|
m_compilerCommand->setFilePath(tc->compilerCommand());
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->extraCodeModelFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->extraCodeModelFlags()));
|
||||||
m_abiWidget->setAbis({}, tc->targetAbi());
|
m_abiWidget->setAbis({}, tc->targetAbi());
|
||||||
const bool haveCompiler = compilerExists(m_compilerCommand->filePath());
|
const bool haveCompiler = compilerExists(m_compilerCommand->filePath());
|
||||||
m_abiWidget->setEnabled(haveCompiler && !tc->isAutoDetected());
|
m_abiWidget->setEnabled(haveCompiler && !tc->isAutoDetected());
|
||||||
@@ -652,7 +652,7 @@ void IarToolChainConfigWidget::handleCompilerCommandChange()
|
|||||||
void IarToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
void IarToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
||||||
{
|
{
|
||||||
const QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
const QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
||||||
const QString str2 = QtcProcess::joinArgs(splitString(str1));
|
const QString str2 = ProcessArgs::joinArgs(splitString(str1));
|
||||||
if (str1 != str2)
|
if (str1 != str2)
|
||||||
m_platformCodeGenFlagsLineEdit->setText(str2);
|
m_platformCodeGenFlagsLineEdit->setText(str2);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -727,7 +727,7 @@ KeilToolChainConfigWidget::KeilToolChainConfigWidget(KeilToolChain *tc) :
|
|||||||
m_compilerCommand->setHistoryCompleter("PE.KEIL.Command.History");
|
m_compilerCommand->setHistoryCompleter("PE.KEIL.Command.History");
|
||||||
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
||||||
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->extraCodeModelFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->extraCodeModelFlags()));
|
||||||
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
||||||
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
||||||
|
|
||||||
@@ -769,7 +769,7 @@ bool KeilToolChainConfigWidget::isDirtyImpl() const
|
|||||||
{
|
{
|
||||||
const auto tc = static_cast<KeilToolChain *>(toolChain());
|
const auto tc = static_cast<KeilToolChain *>(toolChain());
|
||||||
return m_compilerCommand->filePath() != tc->compilerCommand()
|
return m_compilerCommand->filePath() != tc->compilerCommand()
|
||||||
|| m_platformCodeGenFlagsLineEdit->text() != QtcProcess::joinArgs(tc->extraCodeModelFlags())
|
|| m_platformCodeGenFlagsLineEdit->text() != ProcessArgs::joinArgs(tc->extraCodeModelFlags())
|
||||||
|| m_abiWidget->currentAbi() != tc->targetAbi()
|
|| m_abiWidget->currentAbi() != tc->targetAbi()
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@@ -786,7 +786,7 @@ void KeilToolChainConfigWidget::setFromToolChain()
|
|||||||
const QSignalBlocker blocker(this);
|
const QSignalBlocker blocker(this);
|
||||||
const auto tc = static_cast<KeilToolChain *>(toolChain());
|
const auto tc = static_cast<KeilToolChain *>(toolChain());
|
||||||
m_compilerCommand->setFilePath(tc->compilerCommand());
|
m_compilerCommand->setFilePath(tc->compilerCommand());
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->extraCodeModelFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->extraCodeModelFlags()));
|
||||||
m_abiWidget->setAbis({}, tc->targetAbi());
|
m_abiWidget->setAbis({}, tc->targetAbi());
|
||||||
const bool haveCompiler = compilerExists(m_compilerCommand->filePath());
|
const bool haveCompiler = compilerExists(m_compilerCommand->filePath());
|
||||||
m_abiWidget->setEnabled(haveCompiler && !tc->isAutoDetected());
|
m_abiWidget->setEnabled(haveCompiler && !tc->isAutoDetected());
|
||||||
@@ -802,7 +802,7 @@ void KeilToolChainConfigWidget::handleCompilerCommandChange()
|
|||||||
QStringList newExtraArgs = prevExtraArgs;
|
QStringList newExtraArgs = prevExtraArgs;
|
||||||
addDefaultCpuArgs(compilerPath, newExtraArgs);
|
addDefaultCpuArgs(compilerPath, newExtraArgs);
|
||||||
if (prevExtraArgs != newExtraArgs)
|
if (prevExtraArgs != newExtraArgs)
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(newExtraArgs));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(newExtraArgs));
|
||||||
m_macros = dumpPredefinedMacros(compilerPath, newExtraArgs, env);
|
m_macros = dumpPredefinedMacros(compilerPath, newExtraArgs, env);
|
||||||
const Abi guessed = guessAbi(m_macros);
|
const Abi guessed = guessAbi(m_macros);
|
||||||
m_abiWidget->setAbis({}, guessed);
|
m_abiWidget->setAbis({}, guessed);
|
||||||
@@ -815,7 +815,7 @@ void KeilToolChainConfigWidget::handleCompilerCommandChange()
|
|||||||
void KeilToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
void KeilToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
||||||
{
|
{
|
||||||
const QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
const QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
||||||
const QString str2 = QtcProcess::joinArgs(splitString(str1));
|
const QString str2 = ProcessArgs::joinArgs(splitString(str1));
|
||||||
if (str1 != str2)
|
if (str1 != str2)
|
||||||
m_platformCodeGenFlagsLineEdit->setText(str2);
|
m_platformCodeGenFlagsLineEdit->setText(str2);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ ClangDiagnosticConfig diagnosticConfig(const Utils::Id &diagConfigId)
|
|||||||
QStringList splitArgs(QString &argsString)
|
QStringList splitArgs(QString &argsString)
|
||||||
{
|
{
|
||||||
QStringList result;
|
QStringList result;
|
||||||
Utils::QtcProcess::ArgIterator it(&argsString);
|
Utils::ProcessArgs::ArgIterator it(&argsString);
|
||||||
while (it.next())
|
while (it.next())
|
||||||
result.append(it.value());
|
result.append(it.value());
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ QList<CMakeBuildTarget> generateBuildTargets(const PreprocessedData &input,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// CMake sometimes mixes several shell-escaped pieces into one fragment. Disentangle that again:
|
// CMake sometimes mixes several shell-escaped pieces into one fragment. Disentangle that again:
|
||||||
const QStringList parts = QtcProcess::splitArgs(f.fragment);
|
const QStringList parts = ProcessArgs::splitArgs(f.fragment);
|
||||||
for (const QString &part : parts) {
|
for (const QString &part : parts) {
|
||||||
// Some projects abuse linking to libraries to pass random flags to the linker, so ignore
|
// Some projects abuse linking to libraries to pass random flags to the linker, so ignore
|
||||||
// flags mixed into a fragment
|
// flags mixed into a fragment
|
||||||
@@ -315,7 +315,7 @@ static QStringList splitFragments(const QStringList &fragments)
|
|||||||
{
|
{
|
||||||
QStringList result;
|
QStringList result;
|
||||||
for (const QString &f : fragments) {
|
for (const QString &f : fragments) {
|
||||||
result += QtcProcess::splitArgs(f);
|
result += ProcessArgs::splitArgs(f);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
|
|||||||
// we cannot select a file here, because no file browser really supports it...
|
// we cannot select a file here, because no file browser really supports it...
|
||||||
const QString folder = fileInfo.isDir() ? fileInfo.absoluteFilePath() : fileInfo.filePath();
|
const QString folder = fileInfo.isDir() ? fileInfo.absoluteFilePath() : fileInfo.filePath();
|
||||||
const QString app = UnixUtils::fileBrowser(ICore::settings());
|
const QString app = UnixUtils::fileBrowser(ICore::settings());
|
||||||
QStringList browserArgs = Utils::QtcProcess::splitArgs(
|
QStringList browserArgs = ProcessArgs::splitArgs(
|
||||||
UnixUtils::substituteFileBrowserParameters(app, folder));
|
UnixUtils::substituteFileBrowserParameters(app, folder));
|
||||||
QString error;
|
QString error;
|
||||||
if (browserArgs.isEmpty()) {
|
if (browserArgs.isEmpty()) {
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ void SpotlightLocatorFilter::prepareSearch(const QString &entry)
|
|||||||
caseSensitivity(fp.filePath) == Qt::CaseInsensitive ? m_arguments
|
caseSensitivity(fp.filePath) == Qt::CaseInsensitive ? m_arguments
|
||||||
: m_caseSensitiveArguments);
|
: m_caseSensitiveArguments);
|
||||||
setFileIterator(
|
setFileIterator(
|
||||||
new SpotlightIterator(QStringList(m_command) + QtcProcess::splitArgs(argumentString)));
|
new SpotlightIterator(QStringList(m_command) + ProcessArgs::splitArgs(argumentString)));
|
||||||
}
|
}
|
||||||
BaseFileFilter::prepareSearch(entry);
|
BaseFileFilter::prepareSearch(entry);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -890,7 +890,7 @@ bool DebuggerRunTool::fixupParameters()
|
|||||||
QString qmlarg = rp.isCppDebugging() && rp.nativeMixedEnabled
|
QString qmlarg = rp.isCppDebugging() && rp.nativeMixedEnabled
|
||||||
? QmlDebug::qmlDebugNativeArguments(service, false)
|
? QmlDebug::qmlDebugNativeArguments(service, false)
|
||||||
: QmlDebug::qmlDebugTcpArguments(service, rp.qmlServer);
|
: QmlDebug::qmlDebugTcpArguments(service, rp.qmlServer);
|
||||||
QtcProcess::addArg(&rp.inferior.commandLineArguments, qmlarg);
|
ProcessArgs::addArg(&rp.inferior.commandLineArguments, qmlarg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -903,12 +903,12 @@ bool DebuggerRunTool::fixupParameters()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (HostOsInfo::isWindowsHost()) {
|
if (HostOsInfo::isWindowsHost()) {
|
||||||
QtcProcess::SplitError perr;
|
ProcessArgs::SplitError perr;
|
||||||
rp.inferior.commandLineArguments =
|
rp.inferior.commandLineArguments =
|
||||||
QtcProcess::prepareArgs(rp.inferior.commandLineArguments, &perr,
|
ProcessArgs::prepareArgs(rp.inferior.commandLineArguments, &perr,
|
||||||
HostOsInfo::hostOs(), nullptr,
|
HostOsInfo::hostOs(), nullptr,
|
||||||
&rp.inferior.workingDirectory).toWindowsArgs();
|
&rp.inferior.workingDirectory).toWindowsArgs();
|
||||||
if (perr != QtcProcess::SplitOk) {
|
if (perr != ProcessArgs::SplitOk) {
|
||||||
// perr == BadQuoting is never returned on Windows
|
// perr == BadQuoting is never returned on Windows
|
||||||
// FIXME? QTCREATORBUG-2809
|
// FIXME? QTCREATORBUG-2809
|
||||||
reportFailure(DebuggerPlugin::tr("Debugging complex command lines "
|
reportFailure(DebuggerPlugin::tr("Debugging complex command lines "
|
||||||
@@ -1130,7 +1130,7 @@ DebugServerRunner::DebugServerRunner(RunControl *runControl, DebugServerPortsGat
|
|||||||
debugServer.environment = mainRunnable.environment;
|
debugServer.environment = mainRunnable.environment;
|
||||||
debugServer.workingDirectory = mainRunnable.workingDirectory;
|
debugServer.workingDirectory = mainRunnable.workingDirectory;
|
||||||
|
|
||||||
QStringList args = QtcProcess::splitArgs(mainRunnable.commandLineArguments, OsTypeLinux);
|
QStringList args = ProcessArgs::splitArgs(mainRunnable.commandLineArguments, OsTypeLinux);
|
||||||
|
|
||||||
const bool isQmlDebugging = portsGatherer->useQmlServer();
|
const bool isQmlDebugging = portsGatherer->useQmlServer();
|
||||||
const bool isCppDebugging = portsGatherer->useGdbServer();
|
const bool isCppDebugging = portsGatherer->useGdbServer();
|
||||||
@@ -1162,7 +1162,7 @@ DebugServerRunner::DebugServerRunner(RunControl *runControl, DebugServerPortsGat
|
|||||||
args.append(QString::number(m_pid.pid()));
|
args.append(QString::number(m_pid.pid()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debugServer.commandLineArguments = QtcProcess::joinArgs(args, OsTypeLinux);
|
debugServer.commandLineArguments = ProcessArgs::joinArgs(args, OsTypeLinux);
|
||||||
|
|
||||||
doStart(debugServer, runControl->device());
|
doStart(debugServer, runControl->device());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ void LldbEngine::setupEngine()
|
|||||||
cmd2.arg("nativemixed", isNativeMixedActive());
|
cmd2.arg("nativemixed", isNativeMixedActive());
|
||||||
cmd2.arg("workingdirectory", rp.inferior.workingDirectory);
|
cmd2.arg("workingdirectory", rp.inferior.workingDirectory);
|
||||||
cmd2.arg("environment", rp.inferior.environment.toStringList());
|
cmd2.arg("environment", rp.inferior.environment.toStringList());
|
||||||
cmd2.arg("processargs", toHex(QtcProcess::splitArgs(rp.inferior.commandLineArguments).join(QChar(0))));
|
cmd2.arg("processargs", toHex(ProcessArgs::splitArgs(rp.inferior.commandLineArguments).join(QChar(0))));
|
||||||
cmd2.arg("platform", rp.platform);
|
cmd2.arg("platform", rp.platform);
|
||||||
cmd2.arg("symbolfile", rp.symbolFile);
|
cmd2.arg("symbolfile", rp.symbolFile);
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ void PdbEngine::setupEngine()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QStringList args = {bridge, scriptFile.fileName()};
|
QStringList args = {bridge, scriptFile.fileName()};
|
||||||
args.append(Utils::QtcProcess::splitArgs(runParameters().inferior.workingDirectory));
|
args.append(Utils::ProcessArgs::splitArgs(runParameters().inferior.workingDirectory));
|
||||||
showMessage("STARTING " + m_interpreter + ' ' + args.join(' '));
|
showMessage("STARTING " + m_interpreter + ' ' + args.join(' '));
|
||||||
m_proc.setEnvironment(runParameters().debugger.environment.toStringList());
|
m_proc.setEnvironment(runParameters().debugger.environment.toStringList());
|
||||||
m_proc.start(m_interpreter, args);
|
m_proc.start(m_interpreter, args);
|
||||||
|
|||||||
@@ -413,7 +413,7 @@ static QStringList readFlags(const QString &filePath)
|
|||||||
return QStringList();
|
return QStringList();
|
||||||
QStringList flags;
|
QStringList flags;
|
||||||
for (const auto &line : lines)
|
for (const auto &line : lines)
|
||||||
flags.append(QtcProcess::splitArgs(line));
|
flags.append(ProcessArgs::splitArgs(line));
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2574,7 +2574,7 @@ bool GitClient::tryLauchingGitK(const Environment &env,
|
|||||||
}
|
}
|
||||||
const QString gitkOpts = settings().gitkOptions.value();
|
const QString gitkOpts = settings().gitkOptions.value();
|
||||||
if (!gitkOpts.isEmpty())
|
if (!gitkOpts.isEmpty())
|
||||||
arguments.append(QtcProcess::splitArgs(gitkOpts, HostOsInfo::hostOs()));
|
arguments.append(ProcessArgs::splitArgs(gitkOpts, HostOsInfo::hostOs()));
|
||||||
if (!fileName.isEmpty())
|
if (!fileName.isEmpty())
|
||||||
arguments << "--" << fileName;
|
arguments << "--" << fileName;
|
||||||
VcsOutputWindow::appendCommand(workingDirectory, {binary, arguments});
|
VcsOutputWindow::appendCommand(workingDirectory, {binary, arguments});
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ QString CMakeCommandBuilder::defaultArguments() const
|
|||||||
if (buildDir.isEmpty())
|
if (buildDir.isEmpty())
|
||||||
buildDir = ".";
|
buildDir = ".";
|
||||||
|
|
||||||
return Utils::QtcProcess::joinArgs({"--build", buildDir, "--target", "all"});
|
return Utils::ProcessArgs::joinArgs({"--build", buildDir, "--target", "all"});
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CMakeCommandBuilder::setMultiProcessArg(QString args)
|
QString CMakeCommandBuilder::setMultiProcessArg(QString args)
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ QWidget *IosBuildStep::createConfigWidget()
|
|||||||
auto buildArgumentsLabel = new QLabel(tr("Base arguments:"), widget);
|
auto buildArgumentsLabel = new QLabel(tr("Base arguments:"), widget);
|
||||||
|
|
||||||
auto buildArgumentsTextEdit = new QPlainTextEdit(widget);
|
auto buildArgumentsTextEdit = new QPlainTextEdit(widget);
|
||||||
buildArgumentsTextEdit->setPlainText(QtcProcess::joinArgs(baseArguments()));
|
buildArgumentsTextEdit->setPlainText(ProcessArgs::joinArgs(baseArguments()));
|
||||||
|
|
||||||
auto resetDefaultsButton = new QPushButton(widget);
|
auto resetDefaultsButton = new QPushButton(widget);
|
||||||
resetDefaultsButton->setLayoutDirection(Qt::RightToLeft);
|
resetDefaultsButton->setLayoutDirection(Qt::RightToLeft);
|
||||||
@@ -105,7 +105,7 @@ QWidget *IosBuildStep::createConfigWidget()
|
|||||||
auto extraArgumentsLabel = new QLabel(tr("Extra arguments:"), widget);
|
auto extraArgumentsLabel = new QLabel(tr("Extra arguments:"), widget);
|
||||||
|
|
||||||
auto extraArgumentsLineEdit = new QLineEdit(widget);
|
auto extraArgumentsLineEdit = new QLineEdit(widget);
|
||||||
extraArgumentsLineEdit->setText(QtcProcess::joinArgs(m_extraArguments));
|
extraArgumentsLineEdit->setText(ProcessArgs::joinArgs(m_extraArguments));
|
||||||
|
|
||||||
auto gridLayout = new QGridLayout(widget);
|
auto gridLayout = new QGridLayout(widget);
|
||||||
gridLayout->addWidget(buildArgumentsLabel, 0, 0, 1, 1);
|
gridLayout->addWidget(buildArgumentsLabel, 0, 0, 1, 1);
|
||||||
@@ -125,19 +125,19 @@ QWidget *IosBuildStep::createConfigWidget()
|
|||||||
updateDetails();
|
updateDetails();
|
||||||
|
|
||||||
connect(buildArgumentsTextEdit, &QPlainTextEdit::textChanged, this, [=] {
|
connect(buildArgumentsTextEdit, &QPlainTextEdit::textChanged, this, [=] {
|
||||||
setBaseArguments(QtcProcess::splitArgs(buildArgumentsTextEdit->toPlainText()));
|
setBaseArguments(ProcessArgs::splitArgs(buildArgumentsTextEdit->toPlainText()));
|
||||||
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
|
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
|
||||||
updateDetails();
|
updateDetails();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(resetDefaultsButton, &QAbstractButton::clicked, this, [=] {
|
connect(resetDefaultsButton, &QAbstractButton::clicked, this, [=] {
|
||||||
setBaseArguments(defaultArguments());
|
setBaseArguments(defaultArguments());
|
||||||
buildArgumentsTextEdit->setPlainText(QtcProcess::joinArgs(baseArguments()));
|
buildArgumentsTextEdit->setPlainText(ProcessArgs::joinArgs(baseArguments()));
|
||||||
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
|
resetDefaultsButton->setEnabled(!m_useDefaultArguments);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(extraArgumentsLineEdit, &QLineEdit::editingFinished, [=] {
|
connect(extraArgumentsLineEdit, &QLineEdit::editingFinished, [=] {
|
||||||
setExtraArguments(QtcProcess::splitArgs(extraArgumentsLineEdit->text()));
|
setExtraArguments(ProcessArgs::splitArgs(extraArgumentsLineEdit->text()));
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ QWidget *IosDsymBuildStep::createConfigWidget()
|
|||||||
commandLineEdit->setText(command().toString());
|
commandLineEdit->setText(command().toString());
|
||||||
|
|
||||||
auto argumentsTextEdit = new QPlainTextEdit(widget);
|
auto argumentsTextEdit = new QPlainTextEdit(widget);
|
||||||
argumentsTextEdit->setPlainText(Utils::QtcProcess::joinArgs(arguments()));
|
argumentsTextEdit->setPlainText(Utils::ProcessArgs::joinArgs(arguments()));
|
||||||
|
|
||||||
auto argumentsLabel = new QLabel(tr("Arguments:"), widget);
|
auto argumentsLabel = new QLabel(tr("Arguments:"), widget);
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ QWidget *IosDsymBuildStep::createConfigWidget()
|
|||||||
|
|
||||||
connect(argumentsTextEdit, &QPlainTextEdit::textChanged, this,
|
connect(argumentsTextEdit, &QPlainTextEdit::textChanged, this,
|
||||||
[this, argumentsTextEdit, resetDefaultsButton, updateDetails] {
|
[this, argumentsTextEdit, resetDefaultsButton, updateDetails] {
|
||||||
setArguments(Utils::QtcProcess::splitArgs(argumentsTextEdit->toPlainText()));
|
setArguments(Utils::ProcessArgs::splitArgs(argumentsTextEdit->toPlainText()));
|
||||||
resetDefaultsButton->setEnabled(!isDefault());
|
resetDefaultsButton->setEnabled(!isDefault());
|
||||||
updateDetails();
|
updateDetails();
|
||||||
});
|
});
|
||||||
@@ -255,7 +255,7 @@ QWidget *IosDsymBuildStep::createConfigWidget()
|
|||||||
setCommand(defaultCommand());
|
setCommand(defaultCommand());
|
||||||
setArguments(defaultArguments());
|
setArguments(defaultArguments());
|
||||||
commandLineEdit->setText(command().toString());
|
commandLineEdit->setText(command().toString());
|
||||||
argumentsTextEdit->setPlainText(Utils::QtcProcess::joinArgs(arguments()));
|
argumentsTextEdit->setPlainText(Utils::ProcessArgs::joinArgs(arguments()));
|
||||||
resetDefaultsButton->setEnabled(!isDefault());
|
resetDefaultsButton->setEnabled(!isDefault());
|
||||||
updateDetails();
|
updateDetails();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ void IosRunner::start()
|
|||||||
this, &IosRunner::handleFinished);
|
this, &IosRunner::handleFinished);
|
||||||
|
|
||||||
const Runnable runnable = runControl()->runnable();
|
const Runnable runnable = runControl()->runnable();
|
||||||
QStringList args = QtcProcess::splitArgs(runnable.commandLineArguments, OsTypeMac);
|
QStringList args = ProcessArgs::splitArgs(runnable.commandLineArguments, OsTypeMac);
|
||||||
if (m_qmlServerPort.isValid()) {
|
if (m_qmlServerPort.isValid()) {
|
||||||
QUrl qmlServer;
|
QUrl qmlServer;
|
||||||
qmlServer.setPort(m_qmlServerPort.number());
|
qmlServer.setPort(m_qmlServerPort.number());
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ void MesonBuildConfiguration::build(const QString &target)
|
|||||||
|
|
||||||
QStringList MesonBuildConfiguration::mesonConfigArgs()
|
QStringList MesonBuildConfiguration::mesonConfigArgs()
|
||||||
{
|
{
|
||||||
return Utils::QtcProcess::splitArgs(m_parameters) + QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
return Utils::ProcessArgs::splitArgs(m_parameters) + QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &MesonBuildConfiguration::parameters() const
|
const QString &MesonBuildConfiguration::parameters() const
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget()
|
|||||||
|
|
||||||
auto updateUi = [=] {
|
auto updateUi = [=] {
|
||||||
const CommandLine cmd = commandLine();
|
const CommandLine cmd = commandLine();
|
||||||
const QStringList parts = QtcProcess::splitArgs(cmd.toUserOutput());
|
const QStringList parts = ProcessArgs::splitArgs(cmd.toUserOutput());
|
||||||
|
|
||||||
commandTextEdit->setText(parts.join(QChar::LineFeed));
|
commandTextEdit->setText(parts.join(QChar::LineFeed));
|
||||||
|
|
||||||
|
|||||||
@@ -151,11 +151,11 @@ public:
|
|||||||
arguments << "record";
|
arguments << "record";
|
||||||
arguments += m_perfRecordArguments;
|
arguments += m_perfRecordArguments;
|
||||||
arguments << "-o" << "-" << "--" << perfRunnable.executable.toString()
|
arguments << "-o" << "-" << "--" << perfRunnable.executable.toString()
|
||||||
<< Utils::QtcProcess::splitArgs(perfRunnable.commandLineArguments,
|
<< Utils::ProcessArgs::splitArgs(perfRunnable.commandLineArguments,
|
||||||
Utils::OsTypeLinux);
|
Utils::OsTypeLinux);
|
||||||
|
|
||||||
perfRunnable.executable = FilePath::fromString("perf");
|
perfRunnable.executable = FilePath::fromString("perf");
|
||||||
perfRunnable.commandLineArguments = Utils::QtcProcess::joinArgs(arguments,
|
perfRunnable.commandLineArguments = Utils::ProcessArgs::joinArgs(arguments,
|
||||||
Utils::OsTypeLinux);
|
Utils::OsTypeLinux);
|
||||||
m_process->start(perfRunnable);
|
m_process->start(perfRunnable);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ QStringList PerfSettings::perfRecordArguments() const
|
|||||||
"--call-graph", callgraphArg,
|
"--call-graph", callgraphArg,
|
||||||
sampleMode.itemValue().toString(),
|
sampleMode.itemValue().toString(),
|
||||||
QString::number(period.value())})
|
QString::number(period.value())})
|
||||||
+ QtcProcess::splitArgs(extraArguments.value());
|
+ ProcessArgs::splitArgs(extraArguments.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PerfSettings::resetToDefault()
|
void PerfSettings::resetToDefault()
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ void DesktopDeviceProcess::start(const Runnable &runnable)
|
|||||||
m_process.setProcessEnvironment(runnable.environment.toProcessEnvironment());
|
m_process.setProcessEnvironment(runnable.environment.toProcessEnvironment());
|
||||||
m_process.setWorkingDirectory(runnable.workingDirectory);
|
m_process.setWorkingDirectory(runnable.workingDirectory);
|
||||||
m_process.start(runnable.executable.toString(),
|
m_process.start(runnable.executable.toString(),
|
||||||
Utils::QtcProcess::splitArgs(runnable.commandLineArguments));
|
Utils::ProcessArgs::splitArgs(runnable.commandLineArguments));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesktopDeviceProcess::interrupt()
|
void DesktopDeviceProcess::interrupt()
|
||||||
|
|||||||
@@ -1198,10 +1198,10 @@ GccToolChainConfigWidget::GccToolChainConfigWidget(GccToolChain *tc) :
|
|||||||
m_compilerCommand->setHistoryCompleter("PE.Gcc.Command.History");
|
m_compilerCommand->setHistoryCompleter("PE.Gcc.Command.History");
|
||||||
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
m_mainLayout->addRow(tr("&Compiler path:"), m_compilerCommand);
|
||||||
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
m_platformCodeGenFlagsLineEdit = new QLineEdit(this);
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformCodeGenFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags()));
|
||||||
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
m_mainLayout->addRow(tr("Platform codegen flags:"), m_platformCodeGenFlagsLineEdit);
|
||||||
m_platformLinkerFlagsLineEdit = new QLineEdit(this);
|
m_platformLinkerFlagsLineEdit = new QLineEdit(this);
|
||||||
m_platformLinkerFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformLinkerFlags()));
|
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags()));
|
||||||
m_mainLayout->addRow(tr("Platform linker flags:"), m_platformLinkerFlagsLineEdit);
|
m_mainLayout->addRow(tr("Platform linker flags:"), m_platformLinkerFlagsLineEdit);
|
||||||
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
m_mainLayout->addRow(tr("&ABI:"), m_abiWidget);
|
||||||
|
|
||||||
@@ -1254,8 +1254,8 @@ void GccToolChainConfigWidget::setFromToolchain()
|
|||||||
QSignalBlocker blocker(this);
|
QSignalBlocker blocker(this);
|
||||||
auto tc = static_cast<GccToolChain *>(toolChain());
|
auto tc = static_cast<GccToolChain *>(toolChain());
|
||||||
m_compilerCommand->setFilePath(tc->compilerCommand());
|
m_compilerCommand->setFilePath(tc->compilerCommand());
|
||||||
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformCodeGenFlags()));
|
m_platformCodeGenFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformCodeGenFlags()));
|
||||||
m_platformLinkerFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformLinkerFlags()));
|
m_platformLinkerFlagsLineEdit->setText(ProcessArgs::joinArgs(tc->platformLinkerFlags()));
|
||||||
if (m_abiWidget) {
|
if (m_abiWidget) {
|
||||||
m_abiWidget->setAbis(tc->supportedAbis(), tc->targetAbi());
|
m_abiWidget->setAbis(tc->supportedAbis(), tc->targetAbi());
|
||||||
if (!m_isReadOnly && !m_compilerCommand->filePath().toString().isEmpty())
|
if (!m_isReadOnly && !m_compilerCommand->filePath().toString().isEmpty())
|
||||||
@@ -1269,9 +1269,9 @@ bool GccToolChainConfigWidget::isDirtyImpl() const
|
|||||||
Q_ASSERT(tc);
|
Q_ASSERT(tc);
|
||||||
return m_compilerCommand->filePath() != tc->compilerCommand()
|
return m_compilerCommand->filePath() != tc->compilerCommand()
|
||||||
|| m_platformCodeGenFlagsLineEdit->text()
|
|| m_platformCodeGenFlagsLineEdit->text()
|
||||||
!= QtcProcess::joinArgs(tc->platformCodeGenFlags())
|
!= ProcessArgs::joinArgs(tc->platformCodeGenFlags())
|
||||||
|| m_platformLinkerFlagsLineEdit->text()
|
|| m_platformLinkerFlagsLineEdit->text()
|
||||||
!= QtcProcess::joinArgs(tc->platformLinkerFlags())
|
!= ProcessArgs::joinArgs(tc->platformLinkerFlags())
|
||||||
|| (m_abiWidget && m_abiWidget->currentAbi() != tc->targetAbi());
|
|| (m_abiWidget && m_abiWidget->currentAbi() != tc->targetAbi());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1324,7 +1324,7 @@ void GccToolChainConfigWidget::handleCompilerCommandChange()
|
|||||||
void GccToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
void GccToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
||||||
{
|
{
|
||||||
QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
QString str1 = m_platformCodeGenFlagsLineEdit->text();
|
||||||
QString str2 = QtcProcess::joinArgs(splitString(str1));
|
QString str2 = ProcessArgs::joinArgs(splitString(str1));
|
||||||
if (str1 != str2)
|
if (str1 != str2)
|
||||||
m_platformCodeGenFlagsLineEdit->setText(str2);
|
m_platformCodeGenFlagsLineEdit->setText(str2);
|
||||||
else
|
else
|
||||||
@@ -1334,7 +1334,7 @@ void GccToolChainConfigWidget::handlePlatformCodeGenFlagsChange()
|
|||||||
void GccToolChainConfigWidget::handlePlatformLinkerFlagsChange()
|
void GccToolChainConfigWidget::handlePlatformLinkerFlagsChange()
|
||||||
{
|
{
|
||||||
QString str1 = m_platformLinkerFlagsLineEdit->text();
|
QString str1 = m_platformLinkerFlagsLineEdit->text();
|
||||||
QString str2 = QtcProcess::joinArgs(splitString(str1));
|
QString str2 = ProcessArgs::joinArgs(splitString(str1));
|
||||||
if (str1 != str2)
|
if (str1 != str2)
|
||||||
m_platformLinkerFlagsLineEdit->setText(str2);
|
m_platformLinkerFlagsLineEdit->setText(str2);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ bool MakeStep::jobCountOverridesMakeflags() const
|
|||||||
|
|
||||||
static Utils::optional<int> argsJobCount(const QString &str)
|
static Utils::optional<int> argsJobCount(const QString &str)
|
||||||
{
|
{
|
||||||
const QStringList args = Utils::QtcProcess::splitArgs(str, Utils::HostOsInfo::hostOs());
|
const QStringList args = ProcessArgs::splitArgs(str, HostOsInfo::hostOs());
|
||||||
const int argIndex = Utils::indexOf(args, [](const QString &arg) { return arg.startsWith("-j"); });
|
const int argIndex = Utils::indexOf(args, [](const QString &arg) { return arg.startsWith("-j"); });
|
||||||
if (argIndex == -1)
|
if (argIndex == -1)
|
||||||
return Utils::nullopt;
|
return Utils::nullopt;
|
||||||
|
|||||||
@@ -1986,7 +1986,7 @@ Utils::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils:
|
|||||||
Utils::TempFileSaver saver(Utils::TemporaryDirectory::masterDirectoryPath() + "/XXXXXX.bat");
|
Utils::TempFileSaver saver(Utils::TemporaryDirectory::masterDirectoryPath() + "/XXXXXX.bat");
|
||||||
|
|
||||||
QByteArray call = "call ";
|
QByteArray call = "call ";
|
||||||
call += Utils::QtcProcess::quoteArg(batchFile).toLocal8Bit();
|
call += ProcessArgs::quoteArg(batchFile).toLocal8Bit();
|
||||||
if (!batchArgs.isEmpty()) {
|
if (!batchArgs.isEmpty()) {
|
||||||
call += ' ';
|
call += ' ';
|
||||||
call += batchArgs.toLocal8Bit();
|
call += batchArgs.toLocal8Bit();
|
||||||
|
|||||||
@@ -161,10 +161,10 @@ QString ProcessParameters::prettyArguments() const
|
|||||||
{
|
{
|
||||||
QString margs = effectiveArguments();
|
QString margs = effectiveArguments();
|
||||||
QString workDir = effectiveWorkingDirectory().toString();
|
QString workDir = effectiveWorkingDirectory().toString();
|
||||||
QtcProcess::SplitError err;
|
ProcessArgs::SplitError err;
|
||||||
QtcProcess::Arguments args =
|
ProcessArgs args =
|
||||||
QtcProcess::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
|
ProcessArgs::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
|
||||||
if (err != QtcProcess::SplitOk)
|
if (err != ProcessArgs::SplitOk)
|
||||||
return margs; // Sorry, too complex - just fall back.
|
return margs; // Sorry, too complex - just fall back.
|
||||||
return args.toString();
|
return args.toString();
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ QString ProcessParameters::summary(const QString &displayName) const
|
|||||||
|
|
||||||
return QString::fromLatin1("<b>%1:</b> %2 %3")
|
return QString::fromLatin1("<b>%1:</b> %2 %3")
|
||||||
.arg(displayName,
|
.arg(displayName,
|
||||||
QtcProcess::quoteArg(prettyCommand()),
|
ProcessArgs::quoteArg(prettyCommand()),
|
||||||
prettyArguments());
|
prettyArguments());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ QString ProcessParameters::summaryInWorkdir(const QString &displayName) const
|
|||||||
|
|
||||||
return QString::fromLatin1("<b>%1:</b> %2 %3 in %4")
|
return QString::fromLatin1("<b>%1:</b> %2 %3 in %4")
|
||||||
.arg(displayName,
|
.arg(displayName,
|
||||||
QtcProcess::quoteArg(prettyCommand()),
|
ProcessArgs::quoteArg(prettyCommand()),
|
||||||
prettyArguments(),
|
prettyArguments(),
|
||||||
QDir::toNativeSeparators(effectiveWorkingDirectory().toString()));
|
QDir::toNativeSeparators(effectiveWorkingDirectory().toString()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -392,7 +392,7 @@ void ArgumentsAspect::fromMap(const QVariantMap &map)
|
|||||||
QVariant args = map.value(settingsKey());
|
QVariant args = map.value(settingsKey());
|
||||||
// Until 3.7 a QStringList was stored for Remote Linux
|
// Until 3.7 a QStringList was stored for Remote Linux
|
||||||
if (args.type() == QVariant::StringList)
|
if (args.type() == QVariant::StringList)
|
||||||
m_arguments = QtcProcess::joinArgs(args.toStringList(), OsTypeLinux);
|
m_arguments = ProcessArgs::joinArgs(args.toStringList(), OsTypeLinux);
|
||||||
else
|
else
|
||||||
m_arguments = args.toString();
|
m_arguments = args.toString();
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
#include <QScrollArea>
|
#include <QScrollArea>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
|
|
||||||
ToolChainConfigWidget::ToolChainConfigWidget(ToolChain *tc) :
|
ToolChainConfigWidget::ToolChainConfigWidget(ToolChain *tc) :
|
||||||
@@ -128,15 +130,15 @@ void ToolChainConfigWidget::clearErrorMessage()
|
|||||||
|
|
||||||
QStringList ToolChainConfigWidget::splitString(const QString &s)
|
QStringList ToolChainConfigWidget::splitString(const QString &s)
|
||||||
{
|
{
|
||||||
Utils::QtcProcess::SplitError splitError;
|
ProcessArgs::SplitError splitError;
|
||||||
const Utils::OsType osType = Utils::HostOsInfo::hostOs();
|
const OsType osType = HostOsInfo::hostOs();
|
||||||
QStringList res = Utils::QtcProcess::splitArgs(s, osType, false, &splitError);
|
QStringList res = ProcessArgs::splitArgs(s, osType, false, &splitError);
|
||||||
if (splitError != Utils::QtcProcess::SplitOk){
|
if (splitError != ProcessArgs::SplitOk) {
|
||||||
res = Utils::QtcProcess::splitArgs(s + '\\', osType, false, &splitError);
|
res = ProcessArgs::splitArgs(s + '\\', osType, false, &splitError);
|
||||||
if (splitError != Utils::QtcProcess::SplitOk){
|
if (splitError != ProcessArgs::SplitOk) {
|
||||||
res = Utils::QtcProcess::splitArgs(s + '"', osType, false, &splitError);
|
res = ProcessArgs::splitArgs(s + '"', osType, false, &splitError);
|
||||||
if (splitError != Utils::QtcProcess::SplitOk)
|
if (splitError != ProcessArgs::SplitOk)
|
||||||
res = Utils::QtcProcess::splitArgs(s + '\'', osType, false, &splitError);
|
res = ProcessArgs::splitArgs(s + '\'', osType, false, &splitError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ void QbsBuildStep::handleProcessResult(
|
|||||||
if (success && !hasOutput)
|
if (success && !hasOutput)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
emit addOutput(executable.toUserOutput() + ' ' + QtcProcess::joinArgs(arguments),
|
emit addOutput(executable.toUserOutput() + ' ' + ProcessArgs::joinArgs(arguments),
|
||||||
OutputFormat::Stdout);
|
OutputFormat::Stdout);
|
||||||
for (const QString &line : stdErr)
|
for (const QString &line : stdErr)
|
||||||
emit addOutput(line, OutputFormat::Stderr);
|
emit addOutput(line, OutputFormat::Stderr);
|
||||||
@@ -774,7 +774,7 @@ void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data)
|
|||||||
for (QVariantMap::const_iterator i = editable.constBegin(); i != editable.constEnd(); ++i)
|
for (QVariantMap::const_iterator i = editable.constBegin(); i != editable.constEnd(); ++i)
|
||||||
propertyList.append(i.key() + ':' + i.value().toString());
|
propertyList.append(i.key() + ':' + i.value().toString());
|
||||||
|
|
||||||
propertyEdit->setText(QtcProcess::joinArgs(propertyList));
|
propertyEdit->setText(ProcessArgs::joinArgs(propertyList));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsBuildStep::changeBuildVariant()
|
void QbsBuildStep::changeBuildVariant()
|
||||||
@@ -851,10 +851,9 @@ QbsBuildStep *QbsBuildStepConfigWidget::qbsStep() const
|
|||||||
|
|
||||||
bool QbsBuildStepConfigWidget::validateProperties(Utils::FancyLineEdit *edit, QString *errorMessage)
|
bool QbsBuildStepConfigWidget::validateProperties(Utils::FancyLineEdit *edit, QString *errorMessage)
|
||||||
{
|
{
|
||||||
Utils::QtcProcess::SplitError err;
|
ProcessArgs::SplitError err;
|
||||||
QStringList argList = Utils::QtcProcess::splitArgs(edit->text(), Utils::HostOsInfo::hostOs(),
|
QStringList argList = ProcessArgs::splitArgs(edit->text(), HostOsInfo::hostOs(), false, &err);
|
||||||
false, &err);
|
if (err != ProcessArgs::SplitOk) {
|
||||||
if (err != Utils::QtcProcess::SplitOk) {
|
|
||||||
if (errorMessage)
|
if (errorMessage)
|
||||||
*errorMessage = tr("Could not split properties.");
|
*errorMessage = tr("Could not split properties.");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ static QString smartQuote(const QString &aString)
|
|||||||
{
|
{
|
||||||
// The OS type is not important in that case, but use always the same
|
// The OS type is not important in that case, but use always the same
|
||||||
// in order not to generate different quoting depending on host platform
|
// in order not to generate different quoting depending on host platform
|
||||||
return Utils::QtcProcess::quoteArg(aString, Utils::OsTypeLinux);
|
return Utils::ProcessArgs::quoteArg(aString, Utils::OsTypeLinux);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString appendSeparator(const QString &aString)
|
static QString appendSeparator(const QString &aString)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ void MakeFileParse::parseArgs(const QString &args, const QString &project,
|
|||||||
bool after = false;
|
bool after = false;
|
||||||
bool ignoreNext = false;
|
bool ignoreNext = false;
|
||||||
m_unparsedArguments = args;
|
m_unparsedArguments = args;
|
||||||
QtcProcess::ArgIterator ait(&m_unparsedArguments);
|
ProcessArgs::ArgIterator ait(&m_unparsedArguments);
|
||||||
while (ait.next()) {
|
while (ait.next()) {
|
||||||
if (ignoreNext) {
|
if (ignoreNext) {
|
||||||
// Ignoring
|
// Ignoring
|
||||||
@@ -391,11 +391,11 @@ void MakeFileParse::parseCommandLine(const QString &command, const QString &proj
|
|||||||
const QList<QMakeAssignment> &assignmentsToUse = m_mode == Mode::FilterKnownConfigValues
|
const QList<QMakeAssignment> &assignmentsToUse = m_mode == Mode::FilterKnownConfigValues
|
||||||
? filteredAssignments : assignments;
|
? filteredAssignments : assignments;
|
||||||
foreach (const QMakeAssignment &qa, assignmentsToUse)
|
foreach (const QMakeAssignment &qa, assignmentsToUse)
|
||||||
QtcProcess::addArg(&m_unparsedArguments, qa.variable + qa.op + qa.value);
|
ProcessArgs::addArg(&m_unparsedArguments, qa.variable + qa.op + qa.value);
|
||||||
if (!afterAssignments.isEmpty()) {
|
if (!afterAssignments.isEmpty()) {
|
||||||
QtcProcess::addArg(&m_unparsedArguments, QLatin1String("-after"));
|
ProcessArgs::addArg(&m_unparsedArguments, QLatin1String("-after"));
|
||||||
foreach (const QMakeAssignment &qa, afterAssignments)
|
foreach (const QMakeAssignment &qa, afterAssignments)
|
||||||
QtcProcess::addArg(&m_unparsedArguments, qa.variable + qa.op + qa.value);
|
ProcessArgs::addArg(&m_unparsedArguments, qa.variable + qa.op + qa.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,8 +527,8 @@ void QmakeProjectManagerPlugin::testMakefileParser()
|
|||||||
MakeFileParse parser("/tmp/something", MakeFileParse::Mode::FilterKnownConfigValues);
|
MakeFileParse parser("/tmp/something", MakeFileParse::Mode::FilterKnownConfigValues);
|
||||||
parser.parseCommandLine(command, project);
|
parser.parseCommandLine(command, project);
|
||||||
|
|
||||||
QCOMPARE(Utils::QtcProcess::splitArgs(parser.unparsedArguments()),
|
QCOMPARE(Utils::ProcessArgs::splitArgs(parser.unparsedArguments()),
|
||||||
Utils::QtcProcess::splitArgs(unparsedArguments));
|
Utils::ProcessArgs::splitArgs(unparsedArguments));
|
||||||
QCOMPARE(parser.effectiveBuildConfig({}), effectiveBuildConfig);
|
QCOMPARE(parser.effectiveBuildConfig({}), effectiveBuildConfig);
|
||||||
|
|
||||||
const QMakeStepConfig qmsc = parser.config();
|
const QMakeStepConfig qmsc = parser.config();
|
||||||
|
|||||||
@@ -646,7 +646,7 @@ QString QmakeBuildConfiguration::extractSpecFromArguments(QString *args,
|
|||||||
|
|
||||||
bool ignoreNext = false;
|
bool ignoreNext = false;
|
||||||
bool nextIsSpec = false;
|
bool nextIsSpec = false;
|
||||||
for (QtcProcess::ArgIterator ait(args); ait.next(); ) {
|
for (ProcessArgs::ArgIterator ait(args); ait.next(); ) {
|
||||||
if (ignoreNext) {
|
if (ignoreNext) {
|
||||||
ignoreNext = false;
|
ignoreNext = false;
|
||||||
ait.deleteArg();
|
ait.deleteArg();
|
||||||
|
|||||||
@@ -1140,9 +1140,9 @@ QByteArray QmakeProFile::cxxDefines() const
|
|||||||
QByteArray result;
|
QByteArray result;
|
||||||
foreach (const QString &def, variableValue(Variable::Defines)) {
|
foreach (const QString &def, variableValue(Variable::Defines)) {
|
||||||
// 'def' is shell input, so interpret it.
|
// 'def' is shell input, so interpret it.
|
||||||
QtcProcess::SplitError error = QtcProcess::SplitOk;
|
ProcessArgs::SplitError error = ProcessArgs::SplitOk;
|
||||||
const QStringList args = QtcProcess::splitArgs(def, HostOsInfo::hostOs(), false, &error);
|
const QStringList args = ProcessArgs::splitArgs(def, HostOsInfo::hostOs(), false, &error);
|
||||||
if (error != QtcProcess::SplitOk || args.size() == 0)
|
if (error != ProcessArgs::SplitOk || args.size() == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
result += "#define ";
|
result += "#define ";
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ QString QMakeStep::allArguments(const BaseQtVersion *v, ArgumentFlags flags) con
|
|||||||
if (v->qtVersion() < QtVersionNumber(5, 0, 0))
|
if (v->qtVersion() < QtVersionNumber(5, 0, 0))
|
||||||
arguments << "-r";
|
arguments << "-r";
|
||||||
bool userProvidedMkspec = false;
|
bool userProvidedMkspec = false;
|
||||||
for (QtcProcess::ConstArgIterator ait(userArguments()); ait.next(); ) {
|
for (ProcessArgs::ConstArgIterator ait(userArguments()); ait.next(); ) {
|
||||||
if (ait.value() == "-spec") {
|
if (ait.value() == "-spec") {
|
||||||
if (ait.next()) {
|
if (ait.next()) {
|
||||||
userProvidedMkspec = true;
|
userProvidedMkspec = true;
|
||||||
@@ -159,11 +159,11 @@ QString QMakeStep::allArguments(const BaseQtVersion *v, ArgumentFlags flags) con
|
|||||||
|
|
||||||
arguments << deducedArguments().toArguments();
|
arguments << deducedArguments().toArguments();
|
||||||
|
|
||||||
QString args = QtcProcess::joinArgs(arguments);
|
QString args = ProcessArgs::joinArgs(arguments);
|
||||||
// User arguments
|
// User arguments
|
||||||
QtcProcess::addArgs(&args, userArguments());
|
ProcessArgs::addArgs(&args, userArguments());
|
||||||
for (QString arg : qAsConst(m_extraArgs))
|
for (QString arg : qAsConst(m_extraArgs))
|
||||||
QtcProcess::addArgs(&args, arg);
|
ProcessArgs::addArgs(&args, arg);
|
||||||
return (flags & ArgumentFlag::Expand) ? bc->macroExpander()->expand(args) : args;
|
return (flags & ArgumentFlag::Expand) ? bc->macroExpander()->expand(args) : args;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,10 +419,10 @@ QString QMakeStep::makeArguments(const QString &makefile) const
|
|||||||
{
|
{
|
||||||
QString args;
|
QString args;
|
||||||
if (!makefile.isEmpty()) {
|
if (!makefile.isEmpty()) {
|
||||||
QtcProcess::addArg(&args, "-f");
|
ProcessArgs::addArg(&args, "-f");
|
||||||
QtcProcess::addArg(&args, makefile);
|
ProcessArgs::addArg(&args, makefile);
|
||||||
}
|
}
|
||||||
QtcProcess::addArg(&args, "qmake_all");
|
ProcessArgs::addArg(&args, "qmake_all");
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -453,7 +453,7 @@ QStringList QMakeStep::parserArguments()
|
|||||||
QStringList result = m_extraParserArgs;
|
QStringList result = m_extraParserArgs;
|
||||||
BaseQtVersion *qt = QtKitAspect::qtVersion(kit());
|
BaseQtVersion *qt = QtKitAspect::qtVersion(kit());
|
||||||
QTC_ASSERT(qt, return QStringList());
|
QTC_ASSERT(qt, return QStringList());
|
||||||
for (QtcProcess::ConstArgIterator ait(allArguments(qt, ArgumentFlag::Expand)); ait.next(); ) {
|
for (ProcessArgs::ConstArgIterator ait(allArguments(qt, ArgumentFlag::Expand)); ait.next(); ) {
|
||||||
if (ait.isSimple())
|
if (ait.isSimple())
|
||||||
result << ait.value();
|
result << ait.value();
|
||||||
}
|
}
|
||||||
@@ -468,8 +468,8 @@ QString QMakeStep::userArguments() const
|
|||||||
QString QMakeStep::mkspec() const
|
QString QMakeStep::mkspec() const
|
||||||
{
|
{
|
||||||
QString additionalArguments = userArguments();
|
QString additionalArguments = userArguments();
|
||||||
QtcProcess::addArgs(&additionalArguments, m_extraArgs);
|
ProcessArgs::addArgs(&additionalArguments, m_extraArgs);
|
||||||
for (QtcProcess::ArgIterator ait(&additionalArguments); ait.next(); ) {
|
for (ProcessArgs::ArgIterator ait(&additionalArguments); ait.next(); ) {
|
||||||
if (ait.value() == "-spec") {
|
if (ait.value() == "-spec") {
|
||||||
if (ait.next())
|
if (ait.next())
|
||||||
return FilePath::fromUserInput(ait.value()).toString();
|
return FilePath::fromUserInput(ait.value()).toString();
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ LocalQmlPreviewSupport::LocalQmlPreviewSupport(ProjectExplorer::RunControl *runC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::QtcProcess::addArg(&runnable.commandLineArguments,
|
Utils::ProcessArgs::addArg(&runnable.commandLineArguments,
|
||||||
QmlDebug::qmlDebugLocalArguments(QmlDebug::QmlPreviewServices,
|
QmlDebug::qmlDebugLocalArguments(QmlDebug::QmlPreviewServices,
|
||||||
serverUrl.path()));
|
serverUrl.path()));
|
||||||
doStart(runnable, {});
|
doStart(runnable, {});
|
||||||
|
|||||||
@@ -51,7 +51,6 @@
|
|||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
using namespace QmlProfiler::Internal;
|
|
||||||
|
|
||||||
namespace QmlProfiler {
|
namespace QmlProfiler {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -249,7 +248,7 @@ LocalQmlProfilerSupport::LocalQmlProfilerSupport(RunControl *runControl, const Q
|
|||||||
else
|
else
|
||||||
QTC_CHECK(false);
|
QTC_CHECK(false);
|
||||||
|
|
||||||
QString arguments = Utils::QtcProcess::quoteArg(
|
QString arguments = Utils::ProcessArgs::quoteArg(
|
||||||
QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlProfilerServices, code, true));
|
QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlProfilerServices, code, true));
|
||||||
|
|
||||||
if (!debuggee.commandLineArguments.isEmpty())
|
if (!debuggee.commandLineArguments.isEmpty())
|
||||||
|
|||||||
@@ -199,26 +199,26 @@ QString QmlProjectRunConfiguration::commandLineArguments() const
|
|||||||
const QmlBuildSystem *bs = qobject_cast<QmlBuildSystem *>(target()->buildSystem());
|
const QmlBuildSystem *bs = qobject_cast<QmlBuildSystem *>(target()->buildSystem());
|
||||||
foreach (const QString &importPath,
|
foreach (const QString &importPath,
|
||||||
QmlBuildSystem::makeAbsolute(bs->targetDirectory(), bs->customImportPaths())) {
|
QmlBuildSystem::makeAbsolute(bs->targetDirectory(), bs->customImportPaths())) {
|
||||||
QtcProcess::addArg(&args, "-I", osType);
|
ProcessArgs::addArg(&args, "-I", osType);
|
||||||
QtcProcess::addArg(&args, importPath, osType);
|
ProcessArgs::addArg(&args, importPath, osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const QString &fileSelector : bs->customFileSelectors()) {
|
for (const QString &fileSelector : bs->customFileSelectors()) {
|
||||||
QtcProcess::addArg(&args, "-S", osType);
|
ProcessArgs::addArg(&args, "-S", osType);
|
||||||
QtcProcess::addArg(&args, fileSelector, osType);
|
ProcessArgs::addArg(&args, fileSelector, osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Utils::HostOsInfo::isWindowsHost() && bs->forceFreeType()) {
|
if (HostOsInfo::isWindowsHost() && bs->forceFreeType()) {
|
||||||
Utils::QtcProcess::addArg(&args, "-platform", osType);
|
ProcessArgs::addArg(&args, "-platform", osType);
|
||||||
Utils::QtcProcess::addArg(&args, "windows:fontengine=freetype", osType);
|
ProcessArgs::addArg(&args, "windows:fontengine=freetype", osType);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString main = bs->targetFile(FilePath::fromString(mainScript())).toString();
|
const QString main = bs->targetFile(FilePath::fromString(mainScript())).toString();
|
||||||
if (!main.isEmpty())
|
if (!main.isEmpty())
|
||||||
QtcProcess::addArg(&args, main, osType);
|
ProcessArgs::addArg(&args, main, osType);
|
||||||
|
|
||||||
if (m_multiLanguageAspect && m_multiLanguageAspect->value())
|
if (m_multiLanguageAspect && m_multiLanguageAspect->value())
|
||||||
QtcProcess::addArg(&args, "-qmljsdebugger=file:unused_if_debugger_arguments_added,services:DebugTranslation", osType);
|
ProcessArgs::addArg(&args, "-qmljsdebugger=file:unused_if_debugger_arguments_added,services:DebugTranslation", osType);
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ QnxQmlProfilerSupport::QnxQmlProfilerSupport(RunControl *runControl)
|
|||||||
profiler->recordData("QmlServerUrl", serverUrl);
|
profiler->recordData("QmlServerUrl", serverUrl);
|
||||||
|
|
||||||
Runnable r = runControl->runnable();
|
Runnable r = runControl->runnable();
|
||||||
QtcProcess::addArg(&r.commandLineArguments,
|
ProcessArgs::addArg(&r.commandLineArguments,
|
||||||
QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, serverUrl),
|
QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, serverUrl),
|
||||||
Utils::OsTypeOtherUnix);
|
Utils::OsTypeOtherUnix);
|
||||||
|
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ public:
|
|||||||
arguments.append(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices,
|
arguments.append(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices,
|
||||||
portsGatherer->qmlServer()));
|
portsGatherer->qmlServer()));
|
||||||
}
|
}
|
||||||
arguments.append(QtcProcess::splitArgs(r.commandLineArguments));
|
arguments.append(ProcessArgs::splitArgs(r.commandLineArguments));
|
||||||
r.commandLineArguments = QtcProcess::joinArgs(arguments);
|
r.commandLineArguments = ProcessArgs::joinArgs(arguments);
|
||||||
|
|
||||||
doStart(r, runControl->device());
|
doStart(r, runControl->device());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -46,17 +46,16 @@ QnxDeviceProcess::QnxDeviceProcess(const QSharedPointer<const IDevice> &device,
|
|||||||
|
|
||||||
QString QnxDeviceProcess::fullCommandLine(const Runnable &runnable) const
|
QString QnxDeviceProcess::fullCommandLine(const Runnable &runnable) const
|
||||||
{
|
{
|
||||||
QStringList args = QtcProcess::splitArgs(runnable.commandLineArguments);
|
QStringList args = ProcessArgs::splitArgs(runnable.commandLineArguments);
|
||||||
args.prepend(runnable.executable.toString());
|
args.prepend(runnable.executable.toString());
|
||||||
QString cmd = QtcProcess::Arguments::createUnixArgs(args).toString();
|
QString cmd = ProcessArgs::createUnixArgs(args).toString();
|
||||||
|
|
||||||
QString fullCommandLine = QLatin1String(
|
QString fullCommandLine =
|
||||||
"test -f /etc/profile && . /etc/profile ; "
|
"test -f /etc/profile && . /etc/profile ; "
|
||||||
"test -f $HOME/profile && . $HOME/profile ; "
|
"test -f $HOME/profile && . $HOME/profile ; ";
|
||||||
);
|
|
||||||
|
|
||||||
if (!runnable.workingDirectory.isEmpty())
|
if (!runnable.workingDirectory.isEmpty())
|
||||||
fullCommandLine += QString::fromLatin1("cd %1 ; ").arg(QtcProcess::quoteArg(runnable.workingDirectory));
|
fullCommandLine += QString::fromLatin1("cd %1 ; ").arg(ProcessArgs::quoteArg(runnable.workingDirectory));
|
||||||
|
|
||||||
const Environment env = runnable.environment;
|
const Environment env = runnable.environment;
|
||||||
for (auto it = env.constBegin(); it != env.constEnd(); ++it) {
|
for (auto it = env.constBegin(); it != env.constEnd(); ++it) {
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ void GenericDirectUploadService::stopDeployment()
|
|||||||
void GenericDirectUploadService::runStat(const DeployableFile &file)
|
void GenericDirectUploadService::runStat(const DeployableFile &file)
|
||||||
{
|
{
|
||||||
// We'd like to use --format=%Y, but it's not supported by busybox.
|
// We'd like to use --format=%Y, but it's not supported by busybox.
|
||||||
const QString statCmd = "stat -t " + Utils::QtcProcess::quoteArgUnix(file.remoteFilePath());
|
const QString statCmd = "stat -t " + Utils::ProcessArgs::quoteArgUnix(file.remoteFilePath());
|
||||||
SshRemoteProcess * const statProc = connection()->createRemoteProcess(statCmd).release();
|
SshRemoteProcess * const statProc = connection()->createRemoteProcess(statCmd).release();
|
||||||
statProc->setParent(this);
|
statProc->setParent(this);
|
||||||
connect(statProc, &SshRemoteProcess::done, this,
|
connect(statProc, &SshRemoteProcess::done, this,
|
||||||
@@ -344,7 +344,7 @@ void GenericDirectUploadService::chmod()
|
|||||||
if (!f.isExecutable())
|
if (!f.isExecutable())
|
||||||
continue;
|
continue;
|
||||||
const QString command = QLatin1String("chmod a+x ")
|
const QString command = QLatin1String("chmod a+x ")
|
||||||
+ Utils::QtcProcess::quoteArgUnix(f.remoteFilePath());
|
+ Utils::ProcessArgs::quoteArgUnix(f.remoteFilePath());
|
||||||
SshRemoteProcess * const chmodProc
|
SshRemoteProcess * const chmodProc
|
||||||
= connection()->createRemoteProcess(command).release();
|
= connection()->createRemoteProcess(command).release();
|
||||||
chmodProc->setParent(this);
|
chmodProc->setParent(this);
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ void MakeInstallStep::updateArgsFromAspect()
|
|||||||
{
|
{
|
||||||
if (customCommandLineAspect()->isChecked())
|
if (customCommandLineAspect()->isChecked())
|
||||||
return;
|
return;
|
||||||
setUserArguments(QtcProcess::joinArgs(target()->makeInstallCommand(
|
setUserArguments(ProcessArgs::joinArgs(target()->makeInstallCommand(
|
||||||
static_cast<StringAspect *>(aspect(InstallRootAspectId))->filePath().toString())
|
static_cast<StringAspect *>(aspect(InstallRootAspectId))->filePath().toString())
|
||||||
.arguments));
|
.arguments));
|
||||||
updateFullCommandLine();
|
updateFullCommandLine();
|
||||||
@@ -252,7 +252,7 @@ void MakeInstallStep::updateFullCommandLine()
|
|||||||
// FIXME: Only executable?
|
// FIXME: Only executable?
|
||||||
static_cast<StringAspect *>(aspect(FullCommandLineAspectId))->setValue(
|
static_cast<StringAspect *>(aspect(FullCommandLineAspectId))->setValue(
|
||||||
QDir::toNativeSeparators(
|
QDir::toNativeSeparators(
|
||||||
QtcProcess::quoteArg(makeExecutable().toString()))
|
ProcessArgs::quoteArg(makeExecutable().toString()))
|
||||||
+ ' ' + userArguments());
|
+ ' ' + userArguments());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,9 +261,9 @@ void MakeInstallStep::updateFromCustomCommandLineAspect()
|
|||||||
const StringAspect * const aspect = customCommandLineAspect();
|
const StringAspect * const aspect = customCommandLineAspect();
|
||||||
if (!aspect->isChecked())
|
if (!aspect->isChecked())
|
||||||
return;
|
return;
|
||||||
const QStringList tokens = QtcProcess::splitArgs(aspect->value());
|
const QStringList tokens = ProcessArgs::splitArgs(aspect->value());
|
||||||
setMakeCommand(tokens.isEmpty() ? FilePath() : FilePath::fromString(tokens.first()));
|
setMakeCommand(tokens.isEmpty() ? FilePath() : FilePath::fromString(tokens.first()));
|
||||||
setUserArguments(QtcProcess::joinArgs(tokens.mid(1)));
|
setUserArguments(ProcessArgs::joinArgs(tokens.mid(1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
StringAspect *MakeInstallStep::customCommandLineAspect() const
|
StringAspect *MakeInstallStep::customCommandLineAspect() const
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ RemoteLinuxQmlToolingSupport::RemoteLinuxQmlToolingSupport(RunControl *runContro
|
|||||||
QmlDebug::QmlDebugServicesPreset services = QmlDebug::servicesForRunMode(runControl->runMode());
|
QmlDebug::QmlDebugServicesPreset services = QmlDebug::servicesForRunMode(runControl->runMode());
|
||||||
|
|
||||||
Runnable r = runControl->runnable();
|
Runnable r = runControl->runnable();
|
||||||
QtcProcess::addArg(&r.commandLineArguments,
|
ProcessArgs::addArg(&r.commandLineArguments,
|
||||||
QmlDebug::qmlDebugTcpArguments(services, serverUrl),
|
QmlDebug::qmlDebugTcpArguments(services, serverUrl),
|
||||||
OsTypeLinux);
|
OsTypeLinux);
|
||||||
|
|
||||||
|
|||||||
@@ -103,8 +103,8 @@ void RsyncDeployService::createRemoteDirectories()
|
|||||||
remoteDirs << f.remoteDirectory();
|
remoteDirs << f.remoteDirectory();
|
||||||
remoteDirs.sort();
|
remoteDirs.sort();
|
||||||
remoteDirs.removeDuplicates();
|
remoteDirs.removeDuplicates();
|
||||||
m_mkdir = connection()->createRemoteProcess("mkdir -p " + QtcProcess::Arguments
|
m_mkdir = connection()->createRemoteProcess("mkdir -p " +
|
||||||
::createUnixArgs(remoteDirs).toString());
|
ProcessArgs::createUnixArgs(remoteDirs).toString());
|
||||||
connect(m_mkdir.get(), &SshRemoteProcess::done, this, [this](const QString &error) {
|
connect(m_mkdir.get(), &SshRemoteProcess::done, this, [this](const QString &error) {
|
||||||
QString userError;
|
QString userError;
|
||||||
if (!error.isEmpty())
|
if (!error.isEmpty())
|
||||||
@@ -237,7 +237,7 @@ QString RsyncDeployStep::defaultFlags()
|
|||||||
RsyncCommandLine RsyncDeployStep::rsyncCommand(const SshConnection &sshConnection,
|
RsyncCommandLine RsyncDeployStep::rsyncCommand(const SshConnection &sshConnection,
|
||||||
const QString &flags)
|
const QString &flags)
|
||||||
{
|
{
|
||||||
const QString sshCmdLine = QtcProcess::joinArgs(
|
const QString sshCmdLine = ProcessArgs::joinArgs(
|
||||||
QStringList{SshSettings::sshFilePath().toUserOutput()}
|
QStringList{SshSettings::sshFilePath().toUserOutput()}
|
||||||
<< sshConnection.connectionOptions(SshSettings::sshFilePath()), OsTypeLinux);
|
<< sshConnection.connectionOptions(SshSettings::sshFilePath()), OsTypeLinux);
|
||||||
const SshConnectionParameters sshParams = sshConnection.connectionParameters();
|
const SshConnectionParameters sshParams = sshConnection.connectionParameters();
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ QStringList CallgrindToolRunner::toolArguments() const
|
|||||||
if (!m_argumentForToggleCollect.isEmpty())
|
if (!m_argumentForToggleCollect.isEmpty())
|
||||||
arguments << m_argumentForToggleCollect;
|
arguments << m_argumentForToggleCollect;
|
||||||
|
|
||||||
arguments << Utils::QtcProcess::splitArgs(m_settings.callgrindArguments.value());
|
arguments << Utils::ProcessArgs::splitArgs(m_settings.callgrindArguments.value());
|
||||||
|
|
||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ QStringList MemcheckToolRunner::toolArguments() const
|
|||||||
if (m_withGdb)
|
if (m_withGdb)
|
||||||
arguments << "--vgdb=yes" << "--vgdb-error=0";
|
arguments << "--vgdb=yes" << "--vgdb-error=0";
|
||||||
|
|
||||||
arguments << Utils::QtcProcess::splitArgs(m_settings.memcheckArguments.value());
|
arguments << Utils::ProcessArgs::splitArgs(m_settings.memcheckArguments.value());
|
||||||
|
|
||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -448,12 +448,12 @@ static inline QString formatArguments(const QStringList &args)
|
|||||||
if (i)
|
if (i)
|
||||||
str << ' ';
|
str << ' ';
|
||||||
if (arg.startsWith(QString::fromLatin1(passwordOptionC) + '=')) {
|
if (arg.startsWith(QString::fromLatin1(passwordOptionC) + '=')) {
|
||||||
str << QtcProcess::quoteArg("--password=********");
|
str << ProcessArgs::quoteArg("--password=********");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
str << QtcProcess::quoteArg(arg);
|
str << ProcessArgs::quoteArg(arg);
|
||||||
if (arg == passwordOptionC) {
|
if (arg == passwordOptionC) {
|
||||||
str << ' ' << QtcProcess::quoteArg("********");
|
str << ' ' << ProcessArgs::quoteArg("********");
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -463,7 +463,7 @@ static inline QString formatArguments(const QStringList &args)
|
|||||||
QString VcsOutputWindow::msgExecutionLogEntry(const QString &workingDir, const CommandLine &command)
|
QString VcsOutputWindow::msgExecutionLogEntry(const QString &workingDir, const CommandLine &command)
|
||||||
{
|
{
|
||||||
const QString args = formatArguments(command.splitArguments());
|
const QString args = formatArguments(command.splitArguments());
|
||||||
const QString nativeExecutable = QtcProcess::quoteArg(command.executable().toUserOutput());
|
const QString nativeExecutable = ProcessArgs::quoteArg(command.executable().toUserOutput());
|
||||||
if (workingDir.isEmpty())
|
if (workingDir.isEmpty())
|
||||||
return tr("Running: %1 %2").arg(nativeExecutable, args) + '\n';
|
return tr("Running: %1 %2").arg(nativeExecutable, args) + '\n';
|
||||||
return tr("Running in %1: %2 %3").
|
return tr("Running in %1: %2 %3").
|
||||||
|
|||||||
@@ -346,8 +346,8 @@ void WinRtPackageDeploymentStep::stdOutput(const QString &line)
|
|||||||
QString WinRtPackageDeploymentStep::defaultWinDeployQtArguments() const
|
QString WinRtPackageDeploymentStep::defaultWinDeployQtArguments() const
|
||||||
{
|
{
|
||||||
QString args;
|
QString args;
|
||||||
QtcProcess::addArg(&args, QStringLiteral("--qmldir"));
|
ProcessArgs::addArg(&args, QStringLiteral("--qmldir"));
|
||||||
QtcProcess::addArg(&args, project()->projectDirectory().toUserOutput());
|
ProcessArgs::addArg(&args, project()->projectDirectory().toUserOutput());
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
static QList<QByteArray> splitArgs(QString &argsString)
|
static QList<QByteArray> splitArgs(QString &argsString)
|
||||||
{
|
{
|
||||||
QList<QByteArray> result;
|
QList<QByteArray> result;
|
||||||
Utils::QtcProcess::ArgIterator it(&argsString);
|
Utils::ProcessArgs::ArgIterator it(&argsString);
|
||||||
while (it.next())
|
while (it.next())
|
||||||
result.append(it.value().toUtf8());
|
result.append(it.value().toUtf8());
|
||||||
return result;
|
return result;
|
||||||
@@ -112,7 +112,7 @@ const char *CommandLineArguments::at(int position) const
|
|||||||
static Utf8String maybeQuoted(const char *argumentAsCString)
|
static Utf8String maybeQuoted(const char *argumentAsCString)
|
||||||
{
|
{
|
||||||
const QString argumentAsQString = QString::fromUtf8(argumentAsCString);
|
const QString argumentAsQString = QString::fromUtf8(argumentAsCString);
|
||||||
const QString quotedArgument = Utils::QtcProcess::quoteArg(argumentAsQString);
|
const QString quotedArgument = Utils::ProcessArgs::quoteArg(argumentAsQString);
|
||||||
|
|
||||||
return Utf8String::fromString(quotedArgument);
|
return Utf8String::fromString(quotedArgument);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,14 +82,14 @@ static bool generateEnvironmentSettings(Utils::Environment &env,
|
|||||||
Utils::TempFileSaver saver(QDir::tempPath() + "/XXXXXX.bat");
|
Utils::TempFileSaver saver(QDir::tempPath() + "/XXXXXX.bat");
|
||||||
|
|
||||||
QByteArray call = "call ";
|
QByteArray call = "call ";
|
||||||
call += Utils::QtcProcess::quoteArg(batchFile).toLocal8Bit();
|
call += Utils::ProcessArgs::quoteArg(batchFile).toLocal8Bit();
|
||||||
if (!batchArgs.isEmpty()) {
|
if (!batchArgs.isEmpty()) {
|
||||||
call += ' ';
|
call += ' ';
|
||||||
call += batchArgs.toLocal8Bit();
|
call += batchArgs.toLocal8Bit();
|
||||||
}
|
}
|
||||||
saver.write(call + "\r\n");
|
saver.write(call + "\r\n");
|
||||||
|
|
||||||
const QByteArray redirect = "set > " + Utils::QtcProcess::quoteArg(
|
const QByteArray redirect = "set > " + Utils::ProcessArgs::quoteArg(
|
||||||
QDir::toNativeSeparators(tempOutFile)).toLocal8Bit() + "\r\n";
|
QDir::toNativeSeparators(tempOutFile)).toLocal8Bit() + "\r\n";
|
||||||
saver.write(redirect);
|
saver.write(redirect);
|
||||||
if (!saver.finalize()) {
|
if (!saver.finalize()) {
|
||||||
|
|||||||
@@ -130,55 +130,55 @@ void tst_QtcProcess::initTestCase()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QtcProcess::SplitError)
|
Q_DECLARE_METATYPE(ProcessArgs::SplitError)
|
||||||
Q_DECLARE_METATYPE(Utils::OsType)
|
Q_DECLARE_METATYPE(Utils::OsType)
|
||||||
|
|
||||||
void tst_QtcProcess::splitArgs_data()
|
void tst_QtcProcess::splitArgs_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QString>("in");
|
QTest::addColumn<QString>("in");
|
||||||
QTest::addColumn<QString>("out");
|
QTest::addColumn<QString>("out");
|
||||||
QTest::addColumn<QtcProcess::SplitError>("err");
|
QTest::addColumn<ProcessArgs::SplitError>("err");
|
||||||
QTest::addColumn<Utils::OsType>("os");
|
QTest::addColumn<Utils::OsType>("os");
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char * const in;
|
const char * const in;
|
||||||
const char * const out;
|
const char * const out;
|
||||||
const QtcProcess::SplitError err;
|
const ProcessArgs::SplitError err;
|
||||||
const OsType os;
|
const OsType os;
|
||||||
} vals[] = {
|
} vals[] = {
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeWindows},
|
{"", "", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" ", "", QtcProcess::SplitOk, OsTypeWindows},
|
{" ", "", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" hi ho ", "hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{" hi ho ", "hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\", "\\", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\", "\\", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\"", "\"\"\\^\"\"\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\"", "\"\"\\^\"\"\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi\"\"\"ho\"", "\"hi\"\\^\"\"ho\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi\"\"\"ho\"", "\"hi\"\\^\"\"ho\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\\\\\"", "\"\"\\\\\\^\"\"\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\\\\\"", "\"\"\\\\\\^\"\"\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" ^^ ", "\"^^\"", QtcProcess::SplitOk, OsTypeWindows},
|
{" ^^ ", "\"^^\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi\"", "", QtcProcess::BadQuoting, OsTypeWindows},
|
{"hi\"", "", ProcessArgs::BadQuoting, OsTypeWindows},
|
||||||
{"hi\"dood", "", QtcProcess::BadQuoting, OsTypeWindows},
|
{"hi\"dood", "", ProcessArgs::BadQuoting, OsTypeWindows},
|
||||||
{"%var%", "%var%", QtcProcess::SplitOk, OsTypeWindows},
|
{"%var%", "%var%", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
|
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeLinux},
|
{"", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" ", "", QtcProcess::SplitOk, OsTypeLinux},
|
{" ", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" hi ho ", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{" hi ho ", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" \\ ", "' '", QtcProcess::SplitOk, OsTypeLinux},
|
{" \\ ", "' '", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" \\\" ", "'\"'", QtcProcess::SplitOk, OsTypeLinux},
|
{" \\\" ", "'\"'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" '\"' ", "'\"'", QtcProcess::SplitOk, OsTypeLinux},
|
{" '\"' ", "'\"'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" \"\\\"\" ", "'\"'", QtcProcess::SplitOk, OsTypeLinux},
|
{" \"\\\"\" ", "'\"'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi'", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi'", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"hi\"dood", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi\"dood", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"$var", "'$var'", QtcProcess::SplitOk, OsTypeLinux},
|
{"$var", "'$var'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~", "@HOME@", QtcProcess::SplitOk, OsTypeLinux},
|
{"~", "@HOME@", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~ foo", "@HOME@ foo", QtcProcess::SplitOk, OsTypeLinux},
|
{"~ foo", "@HOME@ foo", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"foo ~", "foo @HOME@", QtcProcess::SplitOk, OsTypeLinux},
|
{"foo ~", "foo @HOME@", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~/foo", "@HOME@/foo", QtcProcess::SplitOk, OsTypeLinux},
|
{"~/foo", "@HOME@/foo", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~foo", "'~foo'", QtcProcess::SplitOk, OsTypeLinux}
|
{"~foo", "'~foo'", ProcessArgs::SplitOk, OsTypeLinux}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
||||||
@@ -194,13 +194,13 @@ void tst_QtcProcess::splitArgs()
|
|||||||
{
|
{
|
||||||
QFETCH(QString, in);
|
QFETCH(QString, in);
|
||||||
QFETCH(QString, out);
|
QFETCH(QString, out);
|
||||||
QFETCH(QtcProcess::SplitError, err);
|
QFETCH(ProcessArgs::SplitError, err);
|
||||||
QFETCH(Utils::OsType, os);
|
QFETCH(Utils::OsType, os);
|
||||||
|
|
||||||
QtcProcess::SplitError outerr;
|
ProcessArgs::SplitError outerr;
|
||||||
QString outstr = QtcProcess::joinArgs(QtcProcess::splitArgs(in, os, false, &outerr), os);
|
QString outstr = ProcessArgs::joinArgs(ProcessArgs::splitArgs(in, os, false, &outerr), os);
|
||||||
QCOMPARE(outerr, err);
|
QCOMPARE(outerr, err);
|
||||||
if (err == QtcProcess::SplitOk)
|
if (err == ProcessArgs::SplitOk)
|
||||||
QCOMPARE(outstr, out);
|
QCOMPARE(outstr, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,45 +208,45 @@ void tst_QtcProcess::prepareArgs_data()
|
|||||||
{
|
{
|
||||||
QTest::addColumn<QString>("in");
|
QTest::addColumn<QString>("in");
|
||||||
QTest::addColumn<QString>("out");
|
QTest::addColumn<QString>("out");
|
||||||
QTest::addColumn<QtcProcess::SplitError>("err");
|
QTest::addColumn<ProcessArgs::SplitError>("err");
|
||||||
QTest::addColumn<OsType>("os");
|
QTest::addColumn<OsType>("os");
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char * const in;
|
const char * const in;
|
||||||
const char * const out;
|
const char * const out;
|
||||||
const QtcProcess::SplitError err;
|
const ProcessArgs::SplitError err;
|
||||||
const OsType os;
|
const OsType os;
|
||||||
} vals[] = {
|
} vals[] = {
|
||||||
{" ", " ", QtcProcess::SplitOk, OsTypeWindows},
|
{" ", " ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeWindows},
|
{"", "", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" hi ho ", " hi ho ", QtcProcess::SplitOk, OsTypeWindows},
|
{" hi ho ", " hi ho ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" \"hi\" ho ", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" \"hi\" ho ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\", "\\", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\", "\\", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\"", "\\\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\"", "\\\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi\"\"ho\"", "\"hi\"\"ho\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi\"\"ho\"", "\"hi\"\"ho\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\\\\\"", "\\\\\\\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\\\\\"", "\\\\\\\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"^^", "^", QtcProcess::SplitOk, OsTypeWindows},
|
{"^^", "^", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi\"", "hi\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi\"", "hi\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi\"dood", "hi\"dood", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi\"dood", "hi\"dood", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%var%", "", QtcProcess::FoundMeta, OsTypeWindows},
|
{"%var%", "", ProcessArgs::FoundMeta, OsTypeWindows},
|
||||||
{"echo hi > file", "", QtcProcess::FoundMeta, OsTypeWindows},
|
{"echo hi > file", "", ProcessArgs::FoundMeta, OsTypeWindows},
|
||||||
|
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeLinux},
|
{"", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" ", "", QtcProcess::SplitOk, OsTypeLinux},
|
{" ", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" hi ho ", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{" hi ho ", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" \\ ", "' '", QtcProcess::SplitOk, OsTypeLinux},
|
{" \\ ", "' '", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi'", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi'", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"hi\"dood", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi\"dood", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"$var", "", QtcProcess::FoundMeta, OsTypeLinux},
|
{"$var", "", ProcessArgs::FoundMeta, OsTypeLinux},
|
||||||
{"~", "@HOME@", QtcProcess::SplitOk, OsTypeLinux},
|
{"~", "@HOME@", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~ foo", "@HOME@ foo", QtcProcess::SplitOk, OsTypeLinux},
|
{"~ foo", "@HOME@ foo", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~/foo", "@HOME@/foo", QtcProcess::SplitOk, OsTypeLinux},
|
{"~/foo", "@HOME@/foo", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"~foo", "", QtcProcess::FoundMeta, OsTypeLinux}
|
{"~foo", "", ProcessArgs::FoundMeta, OsTypeLinux}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
||||||
@@ -262,15 +262,15 @@ void tst_QtcProcess::prepareArgs()
|
|||||||
{
|
{
|
||||||
QFETCH(QString, in);
|
QFETCH(QString, in);
|
||||||
QFETCH(QString, out);
|
QFETCH(QString, out);
|
||||||
QFETCH(QtcProcess::SplitError, err);
|
QFETCH(ProcessArgs::SplitError, err);
|
||||||
QFETCH(OsType, os);
|
QFETCH(OsType, os);
|
||||||
|
|
||||||
QtcProcess::SplitError outerr;
|
ProcessArgs::SplitError outerr;
|
||||||
QtcProcess::Arguments args = QtcProcess::prepareArgs(in, &outerr, os);
|
ProcessArgs args = ProcessArgs::prepareArgs(in, &outerr, os);
|
||||||
QString outstr = args.toString();
|
QString outstr = args.toString();
|
||||||
|
|
||||||
QCOMPARE(outerr, err);
|
QCOMPARE(outerr, err);
|
||||||
if (err == QtcProcess::SplitOk)
|
if (err == ProcessArgs::SplitOk)
|
||||||
QCOMPARE(outstr, out);
|
QCOMPARE(outstr, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,65 +278,65 @@ void tst_QtcProcess::prepareArgsEnv_data()
|
|||||||
{
|
{
|
||||||
QTest::addColumn<QString>("in");
|
QTest::addColumn<QString>("in");
|
||||||
QTest::addColumn<QString>("out");
|
QTest::addColumn<QString>("out");
|
||||||
QTest::addColumn<QtcProcess::SplitError>("err");
|
QTest::addColumn<ProcessArgs::SplitError>("err");
|
||||||
QTest::addColumn<OsType>("os");
|
QTest::addColumn<OsType>("os");
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char * const in;
|
const char * const in;
|
||||||
const char * const out;
|
const char * const out;
|
||||||
const QtcProcess::SplitError err;
|
const ProcessArgs::SplitError err;
|
||||||
const OsType os;
|
const OsType os;
|
||||||
} vals[] = {
|
} vals[] = {
|
||||||
{" ", " ", QtcProcess::SplitOk, OsTypeWindows},
|
{" ", " ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeWindows},
|
{"", "", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" hi ho ", " hi ho ", QtcProcess::SplitOk, OsTypeWindows},
|
{" hi ho ", " hi ho ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" \"hi\" ho ", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi ho\" \"hi\" ho ", "\"hi ho\" \"hi\" ho ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\", "\\", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\", "\\", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\"", "\\\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\"", "\\\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\"hi\"\"ho\"", "\"hi\"\"ho\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\"hi\"\"ho\"", "\"hi\"\"ho\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"\\\\\\\"", "\\\\\\\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"\\\\\\\"", "\\\\\\\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"^^", "^", QtcProcess::SplitOk, OsTypeWindows},
|
{"^^", "^", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi\"", "hi\"", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi\"", "hi\"", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"hi\"dood", "hi\"dood", QtcProcess::SplitOk, OsTypeWindows},
|
{"hi\"dood", "hi\"dood", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%empty%", "%empty%", QtcProcess::SplitOk, OsTypeWindows}, // Yep, no empty variables on Windows.
|
{"%empty%", "%empty%", ProcessArgs::SplitOk, OsTypeWindows}, // Yep, no empty variables on Windows.
|
||||||
{"%word%", "hi", QtcProcess::SplitOk, OsTypeWindows},
|
{"%word%", "hi", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{" %word% ", " hi ", QtcProcess::SplitOk, OsTypeWindows},
|
{" %word% ", " hi ", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%words%", "hi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"%words%", "hi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%nonsense%words%", "%nonsensehi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"%nonsense%words%", "%nonsensehi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"fail%nonsense%words%", "fail%nonsensehi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"fail%nonsense%words%", "fail%nonsensehi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%words%words%", "hi howords%", QtcProcess::SplitOk, OsTypeWindows},
|
{"%words%words%", "hi howords%", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"%words%%words%", "hi hohi ho", QtcProcess::SplitOk, OsTypeWindows},
|
{"%words%%words%", "hi hohi ho", ProcessArgs::SplitOk, OsTypeWindows},
|
||||||
{"echo hi > file", "", QtcProcess::FoundMeta, OsTypeWindows},
|
{"echo hi > file", "", ProcessArgs::FoundMeta, OsTypeWindows},
|
||||||
|
|
||||||
{"", "", QtcProcess::SplitOk, OsTypeLinux},
|
{"", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" ", "", QtcProcess::SplitOk, OsTypeLinux},
|
{" ", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi ho", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi ho", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" hi ho ", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{" hi ho ", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"'hi ho' \"hi\" ho ", "'hi ho' hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" \\ ", "' '", QtcProcess::SplitOk, OsTypeLinux},
|
{" \\ ", "' '", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi'", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi'", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"hi\"dood", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"hi\"dood", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"$empty", "", QtcProcess::SplitOk, OsTypeLinux},
|
{"$empty", "", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"$word", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{"$word", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" $word ", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{" $word ", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"${word}", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{"${word}", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{" ${word} ", "hi", QtcProcess::SplitOk, OsTypeLinux},
|
{" ${word} ", "hi", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"$words", "hi ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"$words", "hi ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"$spacedwords", "hi ho sucker", QtcProcess::SplitOk, OsTypeLinux},
|
{"$spacedwords", "hi ho sucker", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi${empty}ho", "hiho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi${empty}ho", "hiho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi${words}ho", "hihi hoho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi${words}ho", "hihi hoho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"hi${spacedwords}ho", "hi hi ho sucker ho", QtcProcess::SplitOk, OsTypeLinux},
|
{"hi${spacedwords}ho", "hi hi ho sucker ho", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"${", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"${", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"${var", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"${var", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"${var ", "", QtcProcess::FoundMeta, OsTypeLinux},
|
{"${var ", "", ProcessArgs::FoundMeta, OsTypeLinux},
|
||||||
{"\"hi${words}ho\"", "'hihi hoho'", QtcProcess::SplitOk, OsTypeLinux},
|
{"\"hi${words}ho\"", "'hihi hoho'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"\"hi${spacedwords}ho\"", "'hi hi ho sucker ho'", QtcProcess::SplitOk, OsTypeLinux},
|
{"\"hi${spacedwords}ho\"", "'hi hi ho sucker ho'", ProcessArgs::SplitOk, OsTypeLinux},
|
||||||
{"\"${", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"\"${", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"\"${var", "", QtcProcess::BadQuoting, OsTypeLinux},
|
{"\"${var", "", ProcessArgs::BadQuoting, OsTypeLinux},
|
||||||
{"\"${var ", "", QtcProcess::FoundMeta, OsTypeLinux},
|
{"\"${var ", "", ProcessArgs::FoundMeta, OsTypeLinux},
|
||||||
};
|
};
|
||||||
|
|
||||||
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
for (unsigned i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
|
||||||
@@ -352,15 +352,15 @@ void tst_QtcProcess::prepareArgsEnv()
|
|||||||
{
|
{
|
||||||
QFETCH(QString, in);
|
QFETCH(QString, in);
|
||||||
QFETCH(QString, out);
|
QFETCH(QString, out);
|
||||||
QFETCH(QtcProcess::SplitError, err);
|
QFETCH(ProcessArgs::SplitError, err);
|
||||||
QFETCH(OsType, os);
|
QFETCH(OsType, os);
|
||||||
|
|
||||||
QtcProcess::SplitError outerr;
|
ProcessArgs::SplitError outerr;
|
||||||
QtcProcess::Arguments args = QtcProcess::prepareArgs(in, &outerr, os, os == OsTypeLinux ? &envLinux : &envWindows);
|
ProcessArgs args = ProcessArgs::prepareArgs(in, &outerr, os, os == OsTypeLinux ? &envLinux : &envWindows);
|
||||||
QString outstr = args.toString();
|
QString outstr = args.toString();
|
||||||
|
|
||||||
QCOMPARE(outerr, err);
|
QCOMPARE(outerr, err);
|
||||||
if (err == QtcProcess::SplitOk)
|
if (err == ProcessArgs::SplitOk)
|
||||||
QCOMPARE(outstr, out);
|
QCOMPARE(outstr, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,9 +605,9 @@ void tst_QtcProcess::expandMacros()
|
|||||||
QFETCH(OsType, os);
|
QFETCH(OsType, os);
|
||||||
|
|
||||||
if (os == OsTypeWindows)
|
if (os == OsTypeWindows)
|
||||||
QtcProcess::expandMacros(&in, &mxWin, os);
|
ProcessArgs::expandMacros(&in, &mxWin, os);
|
||||||
else
|
else
|
||||||
QtcProcess::expandMacros(&in, &mxUnix, os);
|
ProcessArgs::expandMacros(&in, &mxUnix, os);
|
||||||
QCOMPARE(in, out);
|
QCOMPARE(in, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -673,11 +673,11 @@ void tst_QtcProcess::iterations()
|
|||||||
QFETCH(OsType, os);
|
QFETCH(OsType, os);
|
||||||
|
|
||||||
QString outstr;
|
QString outstr;
|
||||||
for (QtcProcess::ArgIterator ait(&in, os); ait.next(); ) {
|
for (ProcessArgs::ArgIterator ait(&in, os); ait.next(); ) {
|
||||||
if (ait.isSimple())
|
if (ait.isSimple())
|
||||||
QtcProcess::addArg(&outstr, ait.value(), os);
|
ProcessArgs::addArg(&outstr, ait.value(), os);
|
||||||
else
|
else
|
||||||
QtcProcess::addArgs(&outstr, "{}");
|
ProcessArgs::addArgs(&outstr, "{}");
|
||||||
}
|
}
|
||||||
QCOMPARE(outstr, out);
|
QCOMPARE(outstr, out);
|
||||||
}
|
}
|
||||||
@@ -686,7 +686,7 @@ void tst_QtcProcess::iteratorEditsHelper(OsType osType)
|
|||||||
{
|
{
|
||||||
QString in1 = "one two three", in2 = in1, in3 = in1, in4 = in1, in5 = in1;
|
QString in1 = "one two three", in2 = in1, in3 = in1, in4 = in1, in5 = in1;
|
||||||
|
|
||||||
QtcProcess::ArgIterator ait1(&in1, osType);
|
ProcessArgs::ArgIterator ait1(&in1, osType);
|
||||||
QVERIFY(ait1.next());
|
QVERIFY(ait1.next());
|
||||||
ait1.deleteArg();
|
ait1.deleteArg();
|
||||||
QVERIFY(ait1.next());
|
QVERIFY(ait1.next());
|
||||||
@@ -696,7 +696,7 @@ void tst_QtcProcess::iteratorEditsHelper(OsType osType)
|
|||||||
ait1.appendArg("four");
|
ait1.appendArg("four");
|
||||||
QCOMPARE(in1, QString::fromLatin1("two three four"));
|
QCOMPARE(in1, QString::fromLatin1("two three four"));
|
||||||
|
|
||||||
QtcProcess::ArgIterator ait2(&in2, osType);
|
ProcessArgs::ArgIterator ait2(&in2, osType);
|
||||||
QVERIFY(ait2.next());
|
QVERIFY(ait2.next());
|
||||||
QVERIFY(ait2.next());
|
QVERIFY(ait2.next());
|
||||||
ait2.deleteArg();
|
ait2.deleteArg();
|
||||||
@@ -705,7 +705,7 @@ void tst_QtcProcess::iteratorEditsHelper(OsType osType)
|
|||||||
QVERIFY(!ait2.next());
|
QVERIFY(!ait2.next());
|
||||||
QCOMPARE(in2, QString::fromLatin1("one three four"));
|
QCOMPARE(in2, QString::fromLatin1("one three four"));
|
||||||
|
|
||||||
QtcProcess::ArgIterator ait3(&in3, osType);
|
ProcessArgs::ArgIterator ait3(&in3, osType);
|
||||||
QVERIFY(ait3.next());
|
QVERIFY(ait3.next());
|
||||||
ait3.appendArg("one-b");
|
ait3.appendArg("one-b");
|
||||||
QVERIFY(ait3.next());
|
QVERIFY(ait3.next());
|
||||||
@@ -714,7 +714,7 @@ void tst_QtcProcess::iteratorEditsHelper(OsType osType)
|
|||||||
QVERIFY(!ait3.next());
|
QVERIFY(!ait3.next());
|
||||||
QCOMPARE(in3, QString::fromLatin1("one one-b two"));
|
QCOMPARE(in3, QString::fromLatin1("one one-b two"));
|
||||||
|
|
||||||
QtcProcess::ArgIterator ait4(&in4, osType);
|
ProcessArgs::ArgIterator ait4(&in4, osType);
|
||||||
ait4.appendArg("pre-one");
|
ait4.appendArg("pre-one");
|
||||||
QVERIFY(ait4.next());
|
QVERIFY(ait4.next());
|
||||||
QVERIFY(ait4.next());
|
QVERIFY(ait4.next());
|
||||||
@@ -723,7 +723,7 @@ void tst_QtcProcess::iteratorEditsHelper(OsType osType)
|
|||||||
QVERIFY(!ait4.next());
|
QVERIFY(!ait4.next());
|
||||||
QCOMPARE(in4, QString::fromLatin1("pre-one one two"));
|
QCOMPARE(in4, QString::fromLatin1("pre-one one two"));
|
||||||
|
|
||||||
QtcProcess::ArgIterator ait5(&in5, osType);
|
ProcessArgs::ArgIterator ait5(&in5, osType);
|
||||||
QVERIFY(ait5.next());
|
QVERIFY(ait5.next());
|
||||||
QVERIFY(ait5.next());
|
QVERIFY(ait5.next());
|
||||||
QVERIFY(ait5.next());
|
QVERIFY(ait5.next());
|
||||||
|
|||||||
Reference in New Issue
Block a user