Contents of /trunk/hal/patches/hal-0.5.10-cleanup-set_suspend_hibernate_keys.patch
Parent Directory | Revision Log
Revision 597 -
(show annotations)
(download)
Mon May 19 19:05:19 2008 UTC (16 years, 4 months ago) by niro
File size: 2789 byte(s)
Mon May 19 19:05:19 2008 UTC (16 years, 4 months ago) by niro
File size: 2789 byte(s)
-gentoo patches
1 | From f0d70628ace93dec0e2ff2d3a2e452f8e8b0427d Mon Sep 17 00:00:00 2001 |
2 | From: Danny Kukawka <danny.kukawka@web.de> |
3 | Date: Thu, 6 Dec 2007 20:39:19 +0100 |
4 | Subject: [PATCH] cleanup set_suspend_hibernate_keys() |
5 | |
6 | This cleans up set_suspend_hibernate_keys(). Reuse existing code where |
7 | possible, call codesections only if really needed (pmu and suspend2). |
8 | --- |
9 | hald/linux/osspec.c | 45 +++++++++++++++++++-------------------------- |
10 | 1 files changed, 19 insertions(+), 26 deletions(-) |
11 | |
12 | diff --git a/hald/linux/osspec.c b/hald/linux/osspec.c |
13 | index feeb733..d7a8672 100644 |
14 | --- a/hald/linux/osspec.c |
15 | +++ b/hald/linux/osspec.c |
16 | @@ -605,27 +605,16 @@ out: |
17 | static void |
18 | set_suspend_hibernate_keys (HalDevice *d) |
19 | { |
20 | - int can_suspend; |
21 | - int can_hibernate; |
22 | - ssize_t read; |
23 | - size_t len; |
24 | + gboolean can_suspend; |
25 | + gboolean can_hibernate; |
26 | char *poweroptions; |
27 | const char *pmtype; |
28 | - FILE *fp; |
29 | |
30 | can_suspend = FALSE; |
31 | can_hibernate = FALSE; |
32 | |
33 | /* try to find 'mem' and 'disk' in /sys/power/state */ |
34 | - fp = fopen ("/sys/power/state", "r"); |
35 | - if (fp == NULL) { |
36 | - HAL_WARNING (("Could not open /sys/power/state")); |
37 | - goto out; |
38 | - } |
39 | - poweroptions = NULL; |
40 | - len = 0; |
41 | - read = getline (&poweroptions, &len, fp); |
42 | - fclose (fp); |
43 | + poweroptions = hal_util_get_string_from_file("/sys/power/", "state"); |
44 | if (poweroptions == NULL) { |
45 | HAL_WARNING (("Contents of /sys/power/state invalid")); |
46 | goto out; |
47 | @@ -634,21 +623,25 @@ set_suspend_hibernate_keys (HalDevice *d) |
48 | can_suspend = TRUE; |
49 | if (strstr (poweroptions, "disk")) |
50 | can_hibernate = TRUE; |
51 | - free (poweroptions); |
52 | |
53 | - pmtype = hal_device_property_get_string (d, "power_management.type"); |
54 | - if (pmtype != NULL && strcmp(pmtype, "pmu") == 0) { |
55 | - /* We got our own helper for suspend PMU machines */ |
56 | - can_suspend = TRUE; |
57 | + if (!can_suspend) { |
58 | + pmtype = hal_device_property_get_string (d, "power_management.type"); |
59 | + if (pmtype != NULL && strcmp(pmtype, "pmu") == 0) { |
60 | + /* We got our own helper for suspend PMU machines */ |
61 | + can_suspend = TRUE; |
62 | + } |
63 | } |
64 | |
65 | - /* check for the presence of suspend2 */ |
66 | - if (access ("/proc/software_suspend", F_OK) == 0) |
67 | - can_hibernate = TRUE; |
68 | - if (access ("/proc/suspend2", F_OK) == 0) |
69 | - can_hibernate = TRUE; |
70 | - if (access ("/sys/power/suspend2/version", F_OK) == 0) |
71 | - can_hibernate = TRUE; |
72 | + if (!can_hibernate) { |
73 | + /* check for the presence of suspend2 */ |
74 | + if (access ("/proc/software_suspend", F_OK) == 0) { |
75 | + can_hibernate = TRUE; |
76 | + } else if (access ("/proc/suspend2", F_OK) == 0) { |
77 | + can_hibernate = TRUE; |
78 | + } else if (access ("/sys/power/suspend2/version", F_OK) == 0) { |
79 | + can_hibernate = TRUE; |
80 | + } |
81 | + } |
82 | out: |
83 | hal_device_property_set_bool (d, "power_management.can_suspend", can_suspend); |
84 | hal_device_property_set_bool (d, "power_management.can_suspend_hybrid", FALSE); |
85 | -- |
86 | 1.5.3.7 |
87 |