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%".
This commit is contained in:
Adrian C. (anrxc) 2009-10-15 23:11:36 +02:00
parent 2cfdd5aac7
commit 4d1af1e5ad
1 changed files with 6 additions and 7 deletions

13
bat.lua
View File

@ -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