pm-is-supported does all the work upower was duplicating, and it handles more
use cases than the old upower code did.  No point in duplicating functionality.

---
 src/linux/up-backend.c |   30 ++++++++++++++++--------------
 1 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c
index 61dddc9..c88c14b 100644
--- a/src/linux/up-backend.c
+++ b/src/linux/up-backend.c
@@ -321,39 +321,41 @@ up_backend_coldplug (UpBackend *backend, UpDaemon *daemon)
 }
 
 /**
- * up_backend_supports_sleep_state:
+ * use pm-is-supported to test for supported sleep states
  **/
+
 static gboolean
 up_backend_supports_sleep_state (const gchar *state)
 {
-       gchar *contents = NULL;
+       gboolean ret = FALSE;
+       gchar *command;
        GError *error = NULL;
-       gboolean ret;
-       const gchar *filename = "/sys/power/state";
+       gint exit_status;
 
-       /* see what kernel can do */
-       ret = g_file_get_contents (filename, &contents, NULL, &error);
+
+       /* run script from pm-utils */
+       command = g_strdup_printf ("/usr/bin/pm-is-supported --%s", state);
+       egg_debug ("excuting command: %s", command);
+       ret = g_spawn_command_line_sync (command, NULL, NULL, &exit_status, 
&error);
        if (!ret) {
-               egg_warning ("failed to open %s: %s", filename, error->message);
+               egg_warning ("failed to run script: %s", error->message);
                g_error_free (error);
                goto out;
        }
-
-       /* does the kernel advertise this */
-       ret = (g_strstr_len (contents, -1, state) != NULL);
+       if (WIFEXITED(exit_status) && (WEXITSTATUS(exit_status) == 
EXIT_SUCCESS))
+               ret = TRUE;
 out:
-       g_free (contents);
+       g_free (command);
        return ret;
 }
 
-
 /**
  * up_backend_kernel_can_suspend:
  **/
 gboolean
 up_backend_kernel_can_suspend (UpBackend *backend)
 {
-       return up_backend_supports_sleep_state ("mem");
+       return up_backend_supports_sleep_state ("suspend");
 }
 
 /**
@@ -362,7 +364,7 @@ up_backend_kernel_can_suspend (UpBackend *backend)
 gboolean
 up_backend_kernel_can_hibernate (UpBackend *backend)
 {
-       return up_backend_supports_sleep_state ("disk");
+       return up_backend_supports_sleep_state ("hibernate");
 }
 
 /**
-- 
1.7.1

_______________________________________________
devkit-devel mailing list
devkit-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/devkit-devel

Reply via email to