summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaurice Kalinowski <maurice.kalinowski@nokia.com>2012-06-04 10:29:07 +0200
committerTim Jenssen <tim.jenssen@nokia.com>2012-06-04 11:04:21 +0200
commitef8f5811e505eda57e83a46bc7d7b9b120c9fad8 (patch)
treebdeabc6d6d6b682efc7025ab55e03e8fd0d69d64
parentb29e28974f855ab89557e16504c7ad612d37db49 (diff)
add working dir parameter
sometimes it is useful to launch a process with a specified working directory. Only use this as an optional argument. Change-Id: I4eedd9b27713b9bc284f1945e67e115b5615640b Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com>
-rw-r--r--src/libs/installer/packagemanagercore.cpp12
-rw-r--r--src/libs/installer/packagemanagercore.h3
2 files changed, 11 insertions, 4 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 96fabdebe..39a8ad343 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1201,17 +1201,23 @@ QList<QVariant> PackageManagerCore::execute(const QString &program, const QStrin
\param program The program that should be executed.
\param arguments Optional list of arguments.
+ \param workingDirectory Optional working directory of the forked process.
\return If the command could not be executed, an false will be returned
*/
-bool PackageManagerCore::executeDetached(const QString &program, const QStringList &arguments) const
+bool PackageManagerCore::executeDetached(const QString &program, const QStringList &arguments,
+ const QString &workingDirectory) const
{
QString adjustedProgram = replaceVariables(program);
QStringList adjustedArguments;
+ QString adjustedWorkingDir = replaceVariables(workingDirectory);
foreach (const QString &argument, arguments)
adjustedArguments.append(replaceVariables(argument));
- qDebug() << "run application as detached process:" << adjustedProgram << adjustedArguments;
- return QProcess::startDetached(adjustedProgram, adjustedArguments);
+ qDebug() << "run application as detached process:" << adjustedProgram << adjustedArguments << adjustedWorkingDir;
+ if (workingDirectory.isEmpty())
+ return QProcess::startDetached(adjustedProgram, adjustedArguments);
+ else
+ return QProcess::startDetached(adjustedProgram, adjustedArguments, adjustedWorkingDir);
}
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index b7dd7585e..55d5760fd 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -118,7 +118,8 @@ public:
Q_INVOKABLE QList<QVariant> execute(const QString &program,
const QStringList &arguments = QStringList(), const QString &stdIn = QString()) const;
Q_INVOKABLE bool executeDetached(const QString &program,
- const QStringList &arguments = QStringList()) const;
+ const QStringList &arguments = QStringList(),
+ const QString &workingDirectory = QString()) const;
Q_INVOKABLE QString environmentVariable(const QString &name) const;
Q_INVOKABLE bool performOperation(const QString &name, const QStringList &arguments);