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
|