aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2009-10-15 23:11:36 +0200
committerAdrian C. (anrxc) <anrxc@sysphere.org>2009-10-15 23:47:54 +0200
commita72b776dd5abcbe4ab646be0e4a4364eac1d8a25 (patch)
tree2117daa8973e78cf7c6d14008c95b7bd544a4447
parent46d71165751797cb0ba454bc38f19b5174e78866 (diff)
downloadvicious-legacy-a72b776dd5abcbe4ab646be0e4a4364eac1d8a25.tar.xz
bat: better fix for ACPI, from bioe007
Previous commit had redudant string > number conversions, and only covered one scenario - when battery is charged. bioe007 suggested to use math.min. Now lets explain why this is needed. Some (lousy) batteries report "remaining capacity" higher than "last full capacity" when AC is connected. That leads to battery charges like "160%".
-rw-r--r--bat.lua13
1 files changed, 6 insertions, 7 deletions
diff --git a/bat.lua b/bat.lua
index 6a759e9..3088ad1 100644
--- a/bat.lua
+++ b/bat.lua
@@ -7,7 +7,10 @@
local tonumber = tonumber
local io = { open = io.open }
local setmetatable = setmetatable
-local math = { floor = math.floor }
+local math = {
+ min = math.min,
+ floor = math.floor
+}
local string = {
find = string.find,
match = string.match,
@@ -60,12 +63,8 @@ local function worker(format, batid)
local remaining = string.match(statefile, "remaining capacity:[%s]+([%d]+).*")
- -- Calculate percentage
- local percent = math.floor(remaining / capacity * 100)
- local percent = string.format("%02d", percent)
- -- Work around broken batteries and/or ACPI implementations
- if state == "↯" and tonumber(percent) > 100 then percent = 100 end
-
+ -- Calculate percentage (but work around broken BAT/ACPI implementations)
+ local percent = math.min(math.floor(remaining / capacity * 100), 100)
-- Calculate remaining (charging or discharging) time
if state == "+" then