diff options
author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2007-03-21 10:54:54 +0000 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2007-03-21 10:54:54 +0000 |
commit | 71a591195618271973a12ae7ffaf288909481cbc (patch) | |
tree | 68ea841f948f1351099dd470ba966edf42125047 /hardinfo2/arch/linux/common/battery.h | |
parent | f7ab0cb977df0d6eba533a245c93da582b9f5f84 (diff) |
Cleanups. APM battery info fixes for Linux 2.6.
Diffstat (limited to 'hardinfo2/arch/linux/common/battery.h')
-rw-r--r-- | hardinfo2/arch/linux/common/battery.h | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/hardinfo2/arch/linux/common/battery.h b/hardinfo2/arch/linux/common/battery.h index 919dc65d..20979e48 100644 --- a/hardinfo2/arch/linux/common/battery.h +++ b/hardinfo2/arch/linux/common/battery.h @@ -136,27 +136,31 @@ __scan_battery_apm(void) static char *sremaining = NULL, *stotal = NULL; static unsigned int last_time = 0; static int percentage = 0; + const char *ac_status[] = { "Battery", + "AC Power", + "Charging" }; int ac_bat; - float apm_bios_ver, apm_drv_ver; + char apm_bios_ver[16], apm_drv_ver[16]; char trash[10]; - if (last_time == 0) { - last_time = time(NULL); - sremaining = g_strdup("Estimating"); - stotal = g_strdup("Estimating"); - } - if ((procapm = fopen("/proc/apm", "r"))) { int old_percentage = percentage; - fscanf(procapm, "%f %f %s 0x%x %s %s %d%%", - &apm_drv_ver, &apm_bios_ver, trash, + fscanf(procapm, "%s %s %s 0x%x %s %s %d%%", + apm_drv_ver, apm_bios_ver, trash, &ac_bat, trash, trash, &percentage); fclose(procapm); + if (last_time == 0) { + last_time = time(NULL); + sremaining = stotal = NULL; + } + if (old_percentage - percentage > 0) { - g_free(sremaining); - g_free(stotal); + if (sremaining && stotal) { + g_free(sremaining); + g_free(stotal); + } int secs_remaining = (time(NULL) - last_time) * percentage / (old_percentage - percentage); @@ -165,19 +169,34 @@ __scan_battery_apm(void) last_time = time(NULL); } + } else { + return; } - battery_list = g_strdup_printf("%s\n[Battery (APM)]\n" - "Charge=%d%%\n" - "Remaining Charge=%s of %s\n" - "Using=%s\n" - "APM driver version=%.2f\n" - "APM BIOS version=%.2f\n", - battery_list, - percentage, - sremaining, stotal, - ac_bat ? "AC Power" : "Battery", - apm_drv_ver, apm_bios_ver); + if (stotal && sremaining) { + battery_list = g_strdup_printf("%s\n[Battery (APM)]\n" + "Charge=%d%%\n" + "Remaining Charge=%s of %s\n" + "Using=%s\n" + "APM driver version=%s\n" + "APM BIOS version=%s\n", + battery_list, + percentage, + sremaining, stotal, + ac_status[ac_bat], + apm_drv_ver, apm_bios_ver); + } else { + battery_list = g_strdup_printf("%s\n[Battery (APM)]\n" + "Charge=%d%%\n" + "Using=%s\n" + "APM driver version=%s\n" + "APM BIOS version=%s\n", + battery_list, + percentage, + ac_status[ac_bat], + apm_drv_ver, apm_bios_ver); + + } } static void |