]> mj.ucw.cz Git - osdd.git/blobdiff - osd-batt.c
osd-batt: Newer kernels use different file names in /sys
[osdd.git] / osd-batt.c
index 2d36aa0ddf3bd4a5389c9574d0d89f01f8ed6cc4..af2e9323d8da5e51d23abc6e1543e97b9503839b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     A Simple Battery Status Display via OSD
  *
- *     (c) 2007--2012 Martin Mares <mj@ucw.cz>
+ *     (c) 2007--2015 Martin Mares <mj@ucw.cz>
  */
 
 #undef DEBUG
@@ -67,6 +67,16 @@ static int sys_read_int(char *attribute, int default_value)
     return atoi(buf);
 }
 
+static int sys_read_int_variant(char *attr1, char *attr2, int default_value)
+{
+  char buf[BUFSIZE];
+  if (sys_read(buf, attr1) && buf[0] ||
+      sys_read(buf, attr2) && buf[0])
+    return atoi(buf);
+  else
+    return default_value;
+}
+
 static void parse_ac(void)
 {
   ac_online = sys_read_int("online", 0);
@@ -97,9 +107,9 @@ static void parse_batt(char *batt_name)
 
   char status[BUFSIZE];
   int charging = sys_read(status, "status") && !strcmp(status, "Charging");
-  int charge_full = sys_read_int("charge_full", 0);
-  int charge_now = sys_read_int("charge_now", 0);
-  int current_now = sys_read_int("current_now", 0);
+  int charge_full = sys_read_int_variant("energy_full", "charge_full", 0);
+  int charge_now = sys_read_int_variant("energy_now", "charge_now", 0);
+  int current_now = sys_read_int_variant("power_now", "current_now", 0);
 
   present_mask |= 1 << batt_id;
   total_now += charge_now;