fix(StartManager): use wordexp to parse Exec
- Signed-off-by: black-desk <me@black-desk.cn>
This commit is contained in:
parent
2d936ac7ae
commit
b1f63d72b5
@ -12,6 +12,8 @@
|
|||||||
#include "meminfo.h"
|
#include "meminfo.h"
|
||||||
#include "../../service/impl/application_manager.h"
|
#include "../../service/impl/application_manager.h"
|
||||||
|
|
||||||
|
#include <wordexp.h>
|
||||||
|
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@ -326,7 +328,7 @@ bool StartManager::doLaunchAppWithOptions(const QString &desktopFile)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
launch(&info, QString::fromStdString(info.getCommandLine()).remove("\""), 0, QStringList());
|
launch(&info, QString::fromStdString(info.getCommandLine()), 0, QStringList());
|
||||||
|
|
||||||
dbusHandler->markLaunched(desktopFile);
|
dbusHandler->markLaunched(desktopFile);
|
||||||
|
|
||||||
@ -355,7 +357,7 @@ bool StartManager::doLaunchAppWithOptions(QString desktopFile, uint32_t timestam
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
launch(&info, QString::fromStdString(info.getCommandLine()).remove("\""), timestamp, files);
|
launch(&info, QString::fromStdString(info.getCommandLine()), timestamp, files);
|
||||||
|
|
||||||
// mark app launched
|
// mark app launched
|
||||||
dbusHandler->markLaunched(desktopFile);
|
dbusHandler->markLaunched(desktopFile);
|
||||||
@ -395,7 +397,18 @@ bool StartManager::launch(DesktopInfo *info, QString cmdLine, uint32_t timestamp
|
|||||||
envs << cmdPrefixesEnvs;
|
envs << cmdPrefixesEnvs;
|
||||||
|
|
||||||
QStringList exeArgs;
|
QStringList exeArgs;
|
||||||
exeArgs << cmdLine.split(" ");
|
|
||||||
|
auto stdCmdLine = cmdLine.toStdString();
|
||||||
|
wordexp_t words;
|
||||||
|
auto ret = wordexp(stdCmdLine.c_str(), &words, 0);
|
||||||
|
if (ret != 0) {
|
||||||
|
qCritical() << "wordexp failed, error code:" << ret;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)words.we_wordc; i++) {
|
||||||
|
exeArgs << words.we_wordv[i];
|
||||||
|
}
|
||||||
|
|
||||||
handleRecognizeArgs(exeArgs, files);
|
handleRecognizeArgs(exeArgs, files);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user