properly parse exec line before qprocessing it for autostart

Summary:
BUG: 372153
CHANGELOG: Repaired autostart of desktop files with place holders
FIXED-IN: 5.8.4

Test Plan:
- add firefox.desktop to autostart
- make sure it autostarts without errors on next login

I really wish we had a framework to test this in isolation :/

Reviewers: davidedmundson

Reviewed By: davidedmundson

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3454
wilder-5.14
Harald Sitter 9 years ago
parent 4b2abc581c
commit 889be45e89
  1. 9
      ksmserver/startup.cpp

@ -68,6 +68,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <kconfig.h>
#include <kconfiggroup.h>
#include <kio/desktopexecparser.h>
#include <KSharedConfig>
#include <kprocess.h>
#include <KNotifyConfig>
@ -678,7 +679,13 @@ void KSMServer::slotAutoStart()
KService service(serviceName);
qCInfo(KSMSERVER) << "Starting autostart service " << serviceName;
auto p = new QProcess(this);
p->start(service.exec());
auto arguments = KIO::DesktopExecParser(service, QList<QUrl>()).resultingArguments();
if (arguments.isEmpty()) {
qCInfo(KSMSERVER) << "failed to parse" << serviceName << "for autostart";
continue;
}
auto program = arguments.takeFirst();
p->start(program, arguments);
connect(p, static_cast<void (QProcess::*)(int)>(&QProcess::finished), [p](int exitCode) {
qCInfo(KSMSERVER) << "autostart service" << p->program() << "finished with exit code " << exitCode;
p->deleteLater();

Loading…
Cancel
Save