summaryrefslogtreecommitdiff
path: root/src/libs/utils/consoleprocess_unix.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-02-05 10:43:21 +0100
committerEike Ziller <eike.ziller@digia.com>2014-02-19 09:19:28 +0100
commitc68ebeed2e47c7a78d790bb732a080edaf07d9ba (patch)
treeab861674989f5b4aaf8f8f70275d53a2e075b0f2 /src/libs/utils/consoleprocess_unix.cpp
parenta0d29eeb03cfe51ed929a83374c18e3301fefdaf (diff)
downloadqt-creator-c68ebeed2e47c7a78d790bb732a080edaf07d9ba.tar.gz
QtcProcess: Introduce a QtcProcess::Arguments class
This is used to get a platform-agnostic handle on "command line arguments". It essentially wraps a single QString on Windows, and a QStringList everywhere else. As a consequence, several occurrences of #ifdef Q_OS_* can be removed from the codebase. Change-Id: Ic93118c1bd0bce0ebb58f416d395dbaebb861772 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'src/libs/utils/consoleprocess_unix.cpp')
-rw-r--r--src/libs/utils/consoleprocess_unix.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp
index 331e65a0ae..cc9474dbb5 100644
--- a/src/libs/utils/consoleprocess_unix.cpp
+++ b/src/libs/utils/consoleprocess_unix.cpp
@@ -75,7 +75,8 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
return false;
QtcProcess::SplitError perr;
- QStringList pargs = QtcProcess::prepareArgs(args, &perr, &d->m_environment, &d->m_workingDir);
+ QtcProcess::Arguments pargs = QtcProcess::prepareArgs(args, &perr, HostOsInfo::hostOs(),
+ &d->m_environment, &d->m_workingDir);
QString pcmd;
if (perr == QtcProcess::SplitOk) {
pcmd = program;
@@ -91,12 +92,15 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
return false;
}
pcmd = QLatin1String("/bin/sh");
- pargs << QLatin1String("-c") << (QtcProcess::quoteArg(program) + QLatin1Char(' ') + args);
+ pargs = QtcProcess::Arguments::createUnixArgs(QStringList()
+ << QLatin1String("-c")
+ << (QtcProcess::quoteArg(program) + QLatin1Char(' ') + args));
}
QtcProcess::SplitError qerr;
- QStringList xtermArgs = QtcProcess::prepareArgs(terminalEmulator(d->m_settings), &qerr,
- &d->m_environment, &d->m_workingDir);
+ QtcProcess::Arguments xtermArgs = QtcProcess::prepareArgs(terminalEmulator(d->m_settings), &qerr,
+ HostOsInfo::hostOs(),
+ &d->m_environment, &d->m_workingDir);
if (qerr != QtcProcess::SplitOk) {
emit processError(qerr == QtcProcess::BadQuoting
? tr("Quoting error in terminal command.")
@@ -134,23 +138,23 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
}
}
- if (Utils::HostOsInfo::isMacHost()) {
- xtermArgs << (QCoreApplication::applicationDirPath()
- + QLatin1String("/../Resources/qtcreator_process_stub"));
- } else {
- xtermArgs << (QCoreApplication::applicationDirPath()
- + QLatin1String("/qtcreator_process_stub"));
- }
- xtermArgs
+ QString stubPath = QCoreApplication::applicationDirPath();
+ if (Utils::HostOsInfo::isMacHost())
+ stubPath.append(QLatin1String("/../Resources/qtcreator_process_stub"));
+ else
+ stubPath.append(QLatin1String("/qtcreator_process_stub"));
+
+ QStringList allArgs = xtermArgs.toUnixArgs();
+ allArgs << stubPath
<< modeOption(d->m_mode)
<< d->m_stubServer.fullServerName()
<< msgPromptToClose()
<< workingDirectory()
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
- << pcmd << pargs;
+ << pcmd << pargs.toUnixArgs();
- QString xterm = xtermArgs.takeFirst();
- d->m_process.start(xterm, xtermArgs);
+ QString xterm = allArgs.takeFirst();
+ d->m_process.start(xterm, allArgs);
if (!d->m_process.waitForStarted()) {
stubServerShutdown();
emit processError(tr("Cannot start the terminal emulator '%1', change the setting in the "