commit 7584a63924620bac3bd87277c11cdb8cdb5018b1 Author: Raymond Wooninck Date: Tue Feb 25 20:12:58 2014 +0100 Perform the systemd version evaluation through a regular expression to be more flexible for changes in the version string that systemd returns (Based on Review request 115271) diff --git a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp index cc3b6ad..70124ad 100644 --- a/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp +++ b/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp @@ -41,13 +41,17 @@ bool checkSystemdVersion(uint requiredVersion) { - bool ok; QDBusInterface systemdIface("org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", QDBusConnection::systemBus(), 0); - const uint version = systemdIface.property("Version").toString().section(' ', 1).toUInt(&ok); - if (ok) { - return (version >= requiredVersion); + + const QString reply = systemdIface.property("Version").toString(); + + QRegExp expsd("(systemd )?([0-9]+)"); + + if (expsd.exactMatch(reply)) { + const uint version = expsd.cap(2).toUInt(); + return (version >= requiredVersion); } // Since version 1.11 Upstart user sessions implement the exact same API as logind