netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=7116c0bde752c2e58b3281d1aaeaa7135f092a88
commit 7116c0bde752c2e58b3281d1aaeaa7135f092a88 Author: Alastair Poole <nets...@gmail.com> Date: Sun Sep 1 16:57:36 2019 +0100 Use better battery names --- src/system.c | 26 ++++++++++++-------------- src/ui.c | 3 ++- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/system.c b/src/system.c index 7ccad64..d3c9f38 100644 --- a/src/system.c +++ b/src/system.c @@ -761,6 +761,7 @@ _power_battery_count_get(power_t *power) { power->bat_mibs[power->battery_count] = malloc(sizeof(int) * 5); + power->battery_names[power->battery_count] = strdup(buf); int *tmp = power->bat_mibs[power->battery_count++]; tmp[0] = mib[0]; tmp[1] = mib[1]; @@ -782,6 +783,7 @@ _power_battery_count_get(power_t *power) power->bat_mibs[power->battery_count] = malloc(sizeof(int) * 5); sysctlnametomib("hw.acpi.battery.life", power->bat_mibs[power->battery_count], &len); + power->battery_names[0] = strdup("hw.acpi.battery.life"); power->battery_count = 1; } @@ -790,29 +792,27 @@ _power_battery_count_get(power_t *power) sysctlnametomib("hw.acpi.acline", power->ac_mibs, &len); } #elif defined(__linux__) - struct dirent *dh; - struct stat st; char path[PATH_MAX]; - DIR *dir; - - dir = opendir("/sys/class/power_supply"); - if (!dir) return 0; + struct dirent **names; + int i, n; - while ((dh = readdir(dir)) != NULL) - { - if (dh->d_name[0] == '.') continue; + n = scandir("/sys/class/power_supply", &names, 0, alphasort); + if (n < 0) return power->battery_count; - snprintf(path, sizeof(path), "/sys/class/power_supply/%s/type", dh->d_name); + for (i = 0; i < n; i++){ + snprintf(path, sizeof(path), "/sys/class/power_supply/%s/type", names[i]->d_name); char *type = Fcontents(path); if (type) { if (!strncmp(type, "Battery", 7)) - power->battery_names[power->battery_count++] = strdup(dh->d_name); + power->battery_names[power->battery_count++] = strdup(names[i]->d_name); free(type); } + + free(names[i]); } - closedir(dir); + free(names); #endif power->batteries = malloc(power->battery_count * sizeof(bat_t **)); @@ -1001,8 +1001,6 @@ _power_state_get(power_t *power) for (i = 0; i < power->battery_count; i++) { - if (power->battery_names[i]) - free(power->battery_names[i]); if (power->bat_mibs[i]) free(power->bat_mibs[i]); } diff --git a/src/ui.c b/src/ui.c index 2107731..0efca58 100644 --- a/src/ui.c +++ b/src/ui.c @@ -140,7 +140,7 @@ _misc_view_update(Ui *ui, results_t *results) evas_object_size_hint_weight_set(frame, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); char buf[256]; - snprintf(buf, sizeof(buf), "Battery %d ", i); + snprintf(buf, sizeof(buf), "Battery %s ", results->power.battery_names[i]); if (results->power.have_ac && i == 0) strcat(buf, "(plugged in)"); @@ -157,6 +157,7 @@ _misc_view_update(Ui *ui, results_t *results) elm_object_content_set(frame, progress); elm_box_pack_end(box, frame); + free(results->power.battery_names[i]); free(results->power.batteries[i]); } --