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
|
From ad0022eb8b1524b18d2b512d7dd8d2920c0f8dab Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
Date: Fri, 25 Nov 2016 01:18:47 +0200
Subject: [PATCH 1/2] Fix battery selection, it appears incompatible with 0.7.2
behavior.
See https://bugs.debian.org/845555
---
ChangeLog | 2 ++
TODO | 2 +-
plugins/batt/batt_sys.c | 30 +++++++++++++++---------------
3 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a21a14e..0abe16b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+* Fixed battery selection, it appears incompatible with 0.7.2 behavior.
+
0.9.1
-------------------------------------------------------------------------
* Fixed build failure without ALSA.
diff --git a/TODO b/TODO
index 965b17c..8d9f91f 100644
--- a/TODO
+++ b/TODO
@@ -17,7 +17,7 @@
* decide 'netstat' vs 'netstatus'
* optional libnotify support (useful for battery and volume plugins)
* pull improvements from Raspbian
-* add Most Recent support into 'menu' plugin
+* add Most Recent support into 'menu' plugin (option: ones not by Run too)
* check and use weather-* standard themed icons for weather plugin
* "Remove this Launch Button" option in launchbar context menu
* 'usb-unmount' plugin
diff --git a/plugins/batt/batt_sys.c b/plugins/batt/batt_sys.c
index 154bd3d..2482c6f 100644
--- a/plugins/batt/batt_sys.c
+++ b/plugins/batt/batt_sys.c
@@ -4,6 +4,7 @@
* Copyright 2009 Juergen Hötzel <juergen@archlinux.org>
* 2015 Henry Gebhardt <hsggebhardt@googlemail.com>
* 2015 Stanislav Kozina, Ersin <xersin@users.sf.net>
+ * 2016 Andriy Grytsenko <andrej@rep.kiev.ua>
*
* Parts shameless stolen and glibified from acpi package
* Copyright (C) 2001 Grahame Bowland <grahame@angrygoats.net>
@@ -295,15 +296,8 @@ battery *battery_get(int battery_number) {
const gchar *entry;
gchar *batt_name = NULL;
gchar *batt_path = NULL;
- GDir * dir = g_dir_open( ACPI_PATH_SYS_POWER_SUPPLY, 0, &error );
+ GDir * dir;
battery *b = NULL;
- int i;
-
- if ( dir == NULL )
- {
- g_warning( "NO ACPI/sysfs support in kernel: %s", error->message );
- return NULL;
- }
/* Try the expected path in sysfs first */
batt_name = g_strdup_printf(ACPI_BATTERY_DEVICE_NAME "%d", battery_number);
@@ -324,13 +318,20 @@ battery *battery_get(int battery_number) {
g_free(batt_path);
if (b != NULL)
- goto done;
+ return b;
/*
* We didn't find the expected path in sysfs.
- * Walk the dir and blindly return n-th entry.
+ * Walk the dir and return any battery.
*/
- i = 0;
+ dir = g_dir_open( ACPI_PATH_SYS_POWER_SUPPLY, 0, &error );
+ if ( dir == NULL )
+ {
+ g_warning( "NO ACPI/sysfs support in kernel: %s", error->message );
+ g_error_free(error);
+ return NULL;
+ }
+
while ( ( entry = g_dir_read_name (dir) ) != NULL )
{
b = battery_new();
@@ -339,9 +340,7 @@ battery *battery_get(int battery_number) {
/* We're looking for a battery with the selected ID */
if (b->type_battery == TRUE) {
- if (i == battery_number)
- break;
- i++;
+ break;
}
battery_free(b);
b = NULL;
@@ -349,9 +348,10 @@ battery *battery_get(int battery_number) {
if (b != NULL)
g_warning( "Battery entry " ACPI_BATTERY_DEVICE_NAME "%d not found, using %s",
battery_number, b->path);
+ // FIXME: update config?
else
g_warning( "Battery %d not found", battery_number );
-done:
+
g_dir_close( dir );
return b;
}
--
2.11.0
|