bool CUPowerSyscall::HasUPower() { DBusError error; DBusConnection *con; bool hasUPower = false; dbus_error_init (&error); con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (dbus_error_is_set(&error)) { CLog::Log(LOGDEBUG, "UPowerSyscall: %s - %s", error.name, error.message); dbus_error_free(&error); return false; } CDBusMessage deviceKitMessage("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "EnumerateDevices"); deviceKitMessage.Send(con, &error); if (!dbus_error_is_set(&error)) hasUPower = true; else CLog::Log(LOGDEBUG, "UPower: %s - %s", error.name, error.message); dbus_error_free (&error); dbus_connection_unref(con); return hasUPower; }
bool CConsoleDeviceKitPowerSyscall::HasDeviceConsoleKit() { bool hasConsoleKitManager = false; CDBusMessage consoleKitMessage("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", "CanStop"); DBusError error; dbus_error_init (&error); DBusConnection *con = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (dbus_error_is_set(&error)) { CLog::Log(LOGDEBUG, "ConsoleUPowerSyscall: %s - %s", error.name, error.message); dbus_error_free(&error); return false; } consoleKitMessage.Send(con, &error); if (!dbus_error_is_set(&error)) hasConsoleKitManager = true; else CLog::Log(LOGDEBUG, "ConsoleKit.Manager: %s - %s", error.name, error.message); dbus_error_free (&error); bool hasDeviceKitPower = false; CDBusMessage deviceKitMessage("org.freedesktop.DeviceKit.Disks", "/org/freedesktop/DeviceKit/Disks", "org.freedesktop.DeviceKit.Disks", "EnumerateDevices"); deviceKitMessage.Send(con, &error); if (!dbus_error_is_set(&error)) hasDeviceKitPower = true; else CLog::Log(LOGDEBUG, "DeviceKit.Power: %s - %s", error.name, error.message); dbus_error_free (&error); dbus_connection_unref(con); return hasDeviceKitPower && hasConsoleKitManager; }