summaryrefslogtreecommitdiffstats
path: root/sysutils/upower/files/patch-0003-add-backend-support-for-obtaining-kernel-info
blob: b09f01b7c0fd23948800e603716cee7c224fdf8d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
From 83a4bda6bfc4da2b454a4916f262dc025503b47a Mon Sep 17 00:00:00 2001
From: Joe Marcus Clarke <marcus@FreeBSD.org>
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