From 83a4bda6bfc4da2b454a4916f262dc025503b47a Mon Sep 17 00:00:00 2001 From: Joe Marcus Clarke Date: Sat, 2 Jan 2010 14:04:57 -0500 Subject: [PATCH 3/3] add backend support for obtaining kernel info Add FreeBSD-only support for pulling information about supported suspend states, commands, swap, etc. from the backend. --- src/up-backend.h | 14 +++++++ src/up-daemon.c | 99 ++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 81 insertions(+), 32 deletions(-) diff --git a/src/up-backend.h b/src/up-backend.h index c03bac9..f4e488f 100644 --- src/up-backend.h +++ src/up-backend.h @@ -68,6 +68,20 @@ void up_backend_test (gpointer user_data); gboolean up_backend_coldplug (UpBackend *backend, UpDaemon *daemon); +gboolean up_backend_can_suspend (UpBackend *backend); + +gboolean up_backend_can_hibernate (UpBackend *backend); + +gboolean up_backend_has_encrypted_swap (UpBackend *backend); + +gfloat up_backend_get_used_swap (UpBackend *backend); + +gchar *up_backend_get_powersave_command (UpBackend *backend, gboolean powersave); + +gchar *up_backend_get_suspend_command (UpBackend *backend); + +gchar *up_backend_get_hibernate_command (UpBackend *backend); + G_END_DECLS #endif /* __UP_BACKEND_H */ diff --git a/src/up-daemon.c b/src/up-daemon.c index 47d84d5..4085fb3 100644 --- src/up-daemon.c +++ src/up-daemon.c @@ -109,6 +109,7 @@ G_DEFINE_TYPE (UpDaemon, up_daemon, G_TYPE_OBJECT) static gboolean up_daemon_check_sleep_states (UpDaemon *daemon) { +#ifndef __FreeBSD__ gchar *contents = NULL; GError *error = NULL; gboolean ret; @@ -128,6 +129,12 @@ up_daemon_check_sleep_states (UpDaemon *daemon) out: g_free (contents); return ret; +#else + daemon->priv->kernel_can_suspend = up_backend_can_suspend (daemon->priv->backend); + daemon->priv->kernel_can_hibernate = up_backend_can_hibernate (daemon->priv->backend); + + return TRUE; +#endif } /** @@ -146,6 +153,7 @@ out: static gboolean up_daemon_check_encrypted_swap (UpDaemon *daemon) { +#ifndef __FreeBSD__ gchar *contents_swaps = NULL; gchar *contents_crypttab = NULL; gchar **lines_swaps = NULL; @@ -235,6 +243,9 @@ out: g_strfreev (lines_swaps); g_strfreev (lines_crypttab); return encrypted_swap; +#else + return up_backend_has_encrypted_swap (daemon->priv->backend); +#endif } /** @@ -243,6 +254,7 @@ out: static gfloat up_daemon_check_swap_space (UpDaemon *daemon) { +#ifndef __FreeBSD__ gchar *contents = NULL; gchar **lines = NULL; GError *error = NULL; @@ -295,6 +297,9 @@ out: g_free (contents); g_strfreev (lines); return percentage; +#else + return up_backend_get_used_swap (daemon->priv->backend); +#endif } /** @@ -423,13 +428,21 @@ up_daemon_set_pmutils_powersave (UpDaemon *daemon, gboolean powersave) GError *error = NULL; /* run script from pm-utils */ +#ifndef __FreeBSD__ command = g_strdup_printf ("/usr/sbin/pm-powersave %s", powersave ? "true" : "false"); - egg_debug ("excuting command: %s", command); - ret = g_spawn_command_line_async (command, &error); - if (!ret) { - egg_warning ("failed to run script: %s", error->message); - g_error_free (error); - goto out; +#else + command = up_backend_get_powersave_command (daemon->priv->backend, powersave); +#endif + if (command != NULL) { + egg_debug ("excuting command: %s", command); + ret = g_spawn_command_line_async (command, &error); + if (!ret) { + egg_warning ("failed to run script: %s", error->message); + g_error_free (error); + goto out; + } + } else { + return TRUE; } out: g_free (command); -- 1.6.5.7