From f947d0a446b1b99020722cbc71127fc0c06086b2 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 11 Oct 2009 22:11:09 +0200 Subject: Breaks configfiles! Major refactoring of i3status, see below MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We finally switched to libconfuse for a configuration file format which does not require much work for the programmer nor for the user. Plus, it avoids the Not-Invented-Here syndrome of yet another config file format. Furthermore, as a consequence of providing format strings for every "module" (ipv6, wireless, …), we directly print the output and thus we needed to drop support for wmii. This allowed us to get rid of quite some complexity. Documentation about the new configuration file and options will follow. This commit is the beginning of what will be i3status v2.0. --- src/get_battery_info.c | 139 ------------------------------------------------- 1 file changed, 139 deletions(-) delete mode 100644 src/get_battery_info.c (limited to 'src/get_battery_info.c') diff --git a/src/get_battery_info.c b/src/get_battery_info.c deleted file mode 100644 index ee78706..0000000 --- a/src/get_battery_info.c +++ /dev/null @@ -1,139 +0,0 @@ -// vim:ts=8:expandtab -#include -#include -#include - -#include "i3status.h" - -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -#include -#include -#endif - -/* - * Get battery information from /sys. Note that it uses the design capacity to - * calculate the percentage, not the last full capacity, so you can see how - * worn off your battery is. - * - */ -const char *get_battery_info(struct battery *bat) { - char buf[1024]; - static char part[512]; - char *walk, *last; - int full_design = -1, - remaining = -1, - present_rate = -1; - charging_status_t status = CS_DISCHARGING; - -#if defined(LINUX) - if (!slurp(bat->path, buf, sizeof(buf))) - return "No battery"; - - for (walk = buf, last = buf; (walk-buf) < 1024; walk++) { - if (*walk == '\n') { - last = walk+1; - continue; - } - - if (*walk != '=') - continue; - - if (BEGINS_WITH(last, "POWER_SUPPLY_ENERGY_NOW") || - BEGINS_WITH(last, "POWER_SUPPLY_CHARGE_NOW")) - remaining = atoi(walk+1); - else if (BEGINS_WITH(last, "POWER_SUPPLY_CURRENT_NOW")) - present_rate = atoi(walk+1); - else if (BEGINS_WITH(last, "POWER_SUPPLY_STATUS=Charging")) - status = CS_CHARGING; - else if (BEGINS_WITH(last, "POWER_SUPPLY_STATUS=Full")) - status = CS_FULL; - else { - /* The only thing left is the full capacity */ - if (bat->use_last_full) { - if (!BEGINS_WITH(last, "POWER_SUPPLY_ENERGY_FULL") && - !BEGINS_WITH(last, "POWER_SUPPLY_CHARGE_FULL")) - continue; - } else { - if (!BEGINS_WITH(last, "POWER_SUPPLY_CHARGE_FULL_DESIGN") && - !BEGINS_WITH(last, "POWER_SUPPLY_ENERGY_FULL_DESIGN")) - continue; - } - - full_design = atoi(walk+1); - } - } - - if ((full_design == 1) || (remaining == -1)) - return part; - - if (present_rate > 0) { - float remaining_time; - int seconds, hours, minutes; - if (status == CS_CHARGING) - remaining_time = ((float)full_design - (float)remaining) / (float)present_rate; - else if (status == CS_DISCHARGING) - remaining_time = ((float)remaining / (float)present_rate); - else remaining_time = 0; - - seconds = (int)(remaining_time * 3600.0); - hours = seconds / 3600; - seconds -= (hours * 3600); - minutes = seconds / 60; - seconds -= (minutes * 60); - - (void)snprintf(part, sizeof(part), "%s %.02f%% %02d:%02d:%02d", - (status == CS_CHARGING ? "CHR" : - (status == CS_DISCHARGING ? "BAT" : "FULL")), - (((float)remaining / (float)full_design) * 100), - max(hours, 0), max(minutes, 0), max(seconds, 0)); - } else { - (void)snprintf(part, sizeof(part), "%s %.02f%%", - (status == CS_CHARGING ? "CHR" : - (status == CS_DISCHARGING ? "BAT" : "FULL")), - (((float)remaining / (float)full_design) * 100)); - } -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) - int state; - int sysctl_rslt; - size_t sysctl_size = sizeof(sysctl_rslt); - - if (sysctlbyname(BATT_LIFE, &sysctl_rslt, &sysctl_size, NULL, 0) != 0) - return "No battery"; - - present_rate = sysctl_rslt; - if (sysctlbyname(BATT_TIME, &sysctl_rslt, &sysctl_size, NULL, 0) != 0) - return "No battery"; - - remaining = sysctl_rslt; - if (sysctlbyname(BATT_STATE, &sysctl_rslt, &sysctl_size, NULL,0) != 0) - return "No battery"; - - state = sysctl_rslt; - if (state == 0 && present_rate == 100) - status = CS_FULL; - else if (state == 0 && present_rate < 100) - status = CS_CHARGING; - else - status = CS_DISCHARGING; - - full_design = sysctl_rslt; - - if (state == 1) { - int hours, minutes; - minutes = remaining; - hours = minutes / 60; - minutes -= (hours * 60); - (void)snprintf(part, sizeof(part), "%s %02d%% %02dh%02d", - (status == CS_CHARGING ? "CHR" : - (status == CS_DISCHARGING ? "BAT" : "FULL")), - present_rate, - max(hours, 0), max(minutes, 0)); - } else { - (void)snprintf(part, sizeof(part), "%s %02d%%", - (status == CS_CHARGING ? "CHR" : - (status == CS_DISCHARGING ? "BAT" : "FULL")), - present_rate); - } -#endif - return part; -} -- cgit v1.2.3