netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=3d51dfe687af79699eef50e31278d1db2a7127bf

commit 3d51dfe687af79699eef50e31278d1db2a7127bf
Author: Alastair Poole <alastair@lenovo.localdomain>
Date:   Sun Sep 8 01:13:43 2019 +0100

    Linux: Batteries.
    
    Linux also provides battery vendor and model. As with FreeBSD
    set the label for battery name "properly".
---
 src/system.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/src/system.c b/src/system.c
index 6b89d97..261d82d 100644
--- a/src/system.c
+++ b/src/system.c
@@ -943,9 +943,44 @@ _battery_state_get(power_t *power)
              free(buf);
           }
 
+        char *model, *vendor;
+
+        snprintf(path, sizeof(path), 
"/sys/class/power_supply/%s/manufacturer", power->battery_names[i]);
+        vendor = file_contents(path);
+
+        snprintf(path, sizeof(path), "/sys/class/power_supply/%s/model_name", 
power->battery_names[i]);
+        model = file_contents(path);
+
+        if (vendor && vendor[0] && model && model[0])
+          {
+             char name[256];
+             int len;
+
+             len = strlen(vendor);
+             if (vendor[len - 1] == '\n' || vendor[len - 1] == '\r')
+               {
+                  vendor[len - 1] = '\0';
+               }
+
+             len = strlen(model);
+             if (model[len - 1] == '\n' || model[len - 1] == '\r')
+               {
+                  model[len - 1] = '\0';
+               }
+
+             free(power->battery_names[i]);
+             snprintf(name, sizeof(name), "%s (%s)", vendor, model);
+             power->battery_names[i] = strdup(name);
+          }
+
         power->batteries[i]->charge_full = charge_full;
         power->batteries[i]->charge_current = charge_current;
 
+        if (model)
+          free(model);
+        if (vendor)
+          free(vendor);
+
         free(naming);
 
         if (i == MAX_BATTERIES)

-- 


Reply via email to