netstar pushed a commit to branch master.

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

commit b580266dc0e21dc8f4980ab52952aa1e1b319922
Author: Alastair Poole <nets...@gmail.com>
Date:   Mon May 17 08:58:23 2021 +0100

    next: need to be able to setup device.
    
    Then query at later time. Else too many queries.
---
 src/bin/evisum_watcher.c       |  27 +++++-
 src/bin/next/machine.h         |  74 ++++++--------
 src/bin/next/machine/cpu.x     |  49 ++++------
 src/bin/next/machine/machine.x |  33 +------
 src/bin/next/machine/memory.x  |  15 ---
 src/bin/next/machine/network.x |  78 ++++++---------
 src/bin/next/machine/sensors.x | 214 +++++++++++------------------------------
 7 files changed, 164 insertions(+), 326 deletions(-)

diff --git a/src/bin/evisum_watcher.c b/src/bin/evisum_watcher.c
index 2d17fc0..3377946 100644
--- a/src/bin/evisum_watcher.c
+++ b/src/bin/evisum_watcher.c
@@ -1,6 +1,6 @@
 #include "next/machine.h"
+#include <Ecore.h>
 
-static Eina_List   *cores = NULL;
 static Eina_List   *batteries = NULL;
 static Eina_List   *sensors = NULL;
 static Eina_List   *network_interfaces = NULL;
@@ -9,10 +9,18 @@ int
 main(int argc, char **argv)
 {
    Eina_List *l;
+   Cpu_Core **cores;
    Battery *bat;
+   Sensor *sensor;
+   Network_Interface *iface;
 
    ecore_init();
 
+   int ncpu = 0;
+   cores = system_cpu_usage_delayed_get(&ncpu, 1000000);
+   for (int i = 0; i < ncpu; i++)
+     printf("core %i = %1.2f%\n", cores[i]->id, cores[i]->percent);
+
    batteries = batteries_find();
    EINA_LIST_FOREACH(batteries, l, bat)
      {
@@ -22,6 +30,23 @@ main(int argc, char **argv)
    EINA_LIST_FREE(batteries, bat)
      battery_free(bat);
 
+   printf("POWER %i\n", power_ac());
+
+   sensors = sensors_find();
+   EINA_LIST_FREE(sensors, sensor)
+     {
+        if (sensor_check(sensor))
+          printf("sensor %s = %1.2f\n", sensor->name, sensor->value);
+        sensor_free(sensor);
+     }
+
+   network_interfaces = network_interfaces_find();
+   EINA_LIST_FREE(network_interfaces, iface)
+     {
+        printf("name => %s => %i %i\n", iface->name, iface->total_in, 
iface->total_out);
+        free(iface);
+     }
+
    ecore_shutdown();
 
    return 0;
diff --git a/src/bin/next/machine.h b/src/bin/next/machine.h
index dd268ff..6cedfd4 100644
--- a/src/bin/next/machine.h
+++ b/src/bin/next/machine.h
@@ -1,12 +1,6 @@
 #ifndef MACHINE_H
 #define MACHINE_H
 
-/* All functions and data types implementing these APIs have no additional
- * system dependencies deliberately.
- *
- * See machine.c and the files includes in machine/ sub directory.
- */
-
 #include <Eina.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -16,9 +10,9 @@ typedef struct
    unsigned long total;
    unsigned long idle;
    float         percent;
-} cpu_core_t;
+   int           id;
+} Cpu_Core;
 
-// Will anyone have more than 8 vdrm/video card devices?
 #define MEM_VIDEO_CARD_MAX 8
 
 typedef struct
@@ -54,7 +48,7 @@ typedef struct
 #endif
    double  value;
    bool    invalid;
-} sensor_t;
+} Sensor;
 
 typedef struct
 {
@@ -76,17 +70,23 @@ typedef struct
 #if defined(__OpenBSD__)
    int      mibs[5];
 #endif
-} power_t;
+} AC_Adapter;
 
 typedef struct
 {
-   char name[255];
-   struct
-   {
-      uint64_t in;
-      uint64_t out;
-   } xfer;
-} net_iface_t;
+   char     name[255];
+   uint64_t total_in;
+   uint64_t total_out;
+
+   uint64_t peak_in;
+   uint64_t peak_out;
+
+   uint64_t in;
+   uint64_t out;
+} Network_Interface;
+
+Eina_Bool
+power_ac(void);
 
 Eina_List *
 batteries_find(void);
@@ -97,8 +97,17 @@ battery_free(Battery *bat);
 void
 battery_check(Battery *bat);
 
+Eina_List *
+sensors_find(void);
 
+void
+sensor_free(Sensor *sensor);
 
+Eina_Bool
+sensor_check(Sensor *sensor);
+
+Eina_List *
+network_interfaces_find(void);
 
 int
 system_cpu_online_count_get(void);
@@ -106,13 +115,13 @@ system_cpu_online_count_get(void);
 int
 system_cpu_count_get(void);
 
-cpu_core_t **
+Cpu_Core **
 system_cpu_usage_get(int *ncpu);
-
-cpu_core_t **
+ 
+Cpu_Core **
 system_cpu_usage_delayed_get(int *ncpu, int usecs);
-
-cpu_core_t **
+ 
+Cpu_Core **
 system_cpu_state_get(int *ncpu);
 
 int
@@ -136,25 +145,4 @@ system_cpu_topology_get(int *ids, int ncpus);
 void
 system_memory_usage_get(meminfo_t *memory);
 
-sensor_t **
-system_sensors_thermal_get(int *count);
-
-void
-system_sensors_thermal_free(sensor_t **sensors, int count);
-
-int
-system_sensor_thermal_get(sensor_t *sensor);
-
-void
-system_sensor_thermal_free(sensor_t *sensor);
-
-void
-system_power_state_get(power_t *power);
-
-void
-system_power_state_free(power_t *power);
-
-net_iface_t **
-system_network_ifaces_get(int *n);
-
 #endif
diff --git a/src/bin/next/machine/cpu.x b/src/bin/next/machine/cpu.x
index 8478168..f34e7ec 100644
--- a/src/bin/next/machine/cpu.x
+++ b/src/bin/next/machine/cpu.x
@@ -1,19 +1,3 @@
-/*
- * Copyright (c) 2018 Alastair Roy Poole <nets...@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
 #if defined(__OpenBSD__)
 # define CPU_STATES      6
 #else
@@ -88,12 +72,12 @@ system_cpu_online_count_get(void)
 }
 
 static void
-_cpu_state_get(cpu_core_t **cores, int ncpu)
+_cpu_state_get(Cpu_Core **cores, int ncpu)
 {
    int diff_total, diff_idle;
    double ratio, percent;
    unsigned long total, idle, used;
-   cpu_core_t *core;
+   Cpu_Core *core;
 #if defined(__FreeBSD__) || defined(__DragonFly__)
    size_t size;
    int i, j;
@@ -131,6 +115,7 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
         core->percent = percent;
         core->total = total;
         core->idle = idle;
+        core->id = i;
      }
 #elif defined(__OpenBSD__)
    static struct cpustats cpu_times[CPU_STATES];
@@ -170,6 +155,7 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
         core->percent = percent;
         core->total = total;
         core->idle = idle;
+        core->id = i;
      }
 #elif defined(__linux__)
    char *buf, name[128];
@@ -208,6 +194,7 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
              core->percent = percent;
              core->total = total;
              core->idle = idle;
+             core->id = i;
           }
      }
    free(buf);
@@ -249,38 +236,43 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
         core->percent = percent;
         core->total = total;
         core->idle = idle;
+        core->id = i;
      }
 #endif
 }
 
-cpu_core_t **
+Cpu_Core **
 system_cpu_state_get(int *ncpu)
 {
-   cpu_core_t **cores;
+   Cpu_Core **cores;
    int i;
 
    *ncpu = cpu_count();
-   cores = malloc((*ncpu) * sizeof(cpu_core_t *));
+   cores = malloc((*ncpu) * sizeof(Cpu_Core *));
    for (i = 0; i < *ncpu; i++)
-      cores[i] = calloc(1, sizeof(cpu_core_t));
+      cores[i] = calloc(1, sizeof(Cpu_Core));
 
    _cpu_state_get(cores, *ncpu);
 
    return cores;
 }
 
-cpu_core_t **
+Cpu_Core **
 system_cpu_usage_delayed_get(int *ncpu, int usecs)
 {
-   cpu_core_t **cores;
+   Cpu_Core **cores;
    int i;
 
    *ncpu = cpu_count();
 
-   cores = malloc((*ncpu) * sizeof(cpu_core_t *));
+   cores = malloc((*ncpu) * sizeof(Cpu_Core *));
+   if (!cores) return NULL;
 
    for (i = 0; i < *ncpu; i++)
-     cores[i] = calloc(1, sizeof(cpu_core_t));
+     {
+        cores[i] = calloc(1, sizeof(Cpu_Core));
+        if (!cores[i]) return NULL;
+     }
 
    _cpu_state_get(cores, *ncpu);
    usleep(usecs);
@@ -289,7 +281,7 @@ system_cpu_usage_delayed_get(int *ncpu, int usecs)
    return cores;
 }
 
-cpu_core_t **
+Cpu_Core **
 system_cpu_usage_get(int *ncpu)
 {
    return system_cpu_usage_delayed_get(ncpu, 1000000);
@@ -330,7 +322,8 @@ _cpu_n_temperature_read(int n)
 
 #if defined(__linux__)
 
-typedef struct _thermal_drv {
+typedef struct _thermal_drv
+{
    const char *name;
    void (*init)(void);
    char min;
diff --git a/src/bin/next/machine/machine.x b/src/bin/next/machine/machine.x
index df1240c..8c6873d 100644
--- a/src/bin/next/machine/machine.x
+++ b/src/bin/next/machine/machine.x
@@ -1,18 +1,3 @@
-/*
- * Copyright (c) 2018 Alastair Roy Poole <nets...@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
 
 #include <stdarg.h>
 
@@ -45,7 +30,7 @@ file_contents(const char *path)
      }
    fclose(f);
 
-   if (buf[len - 1] == '\n')
+   if ((buf[len - 1] == '\n') || (buf[len -1] == '\r'))
      buf[len - 1] = 0;
    else
      buf[len] = 0;
@@ -53,22 +38,6 @@ file_contents(const char *path)
    return buf;
 }
 
-void
-strimmer(char *s)
-{
-   char *cp = s;
-
-   while (*cp)
-     {
-        if ((*cp == '\r') || (*cp == '\n'))
-          {
-             *cp = '\0';
-             return;
-          }
-        cp++;
-     }
-}
-
 #if defined(__FreeBSD__) || defined(__DragonFly__)
 static long int
 _sysctlfromname(const char *name, void *mib, int depth, size_t *len)
diff --git a/src/bin/next/machine/memory.x b/src/bin/next/machine/memory.x
index 90fa1e2..6e9aa80 100644
--- a/src/bin/next/machine/memory.x
+++ b/src/bin/next/machine/memory.x
@@ -1,18 +1,3 @@
-/*
- * Copyright (c) 2018 Alastair Roy Poole <nets...@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
 
 #if defined(__linux__)
 static unsigned long
diff --git a/src/bin/next/machine/network.x b/src/bin/next/machine/network.x
index dc4bd83..f1c6f29 100644
--- a/src/bin/next/machine/network.x
+++ b/src/bin/next/machine/network.x
@@ -1,21 +1,5 @@
-/*
- * Copyright (c) 2018 Alastair Roy Poole <nets...@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
 #if defined(__MacOS__) || defined(__FreeBSD__) || defined(__DragonFly__)
-static net_iface_t **
+static Eina_List *
 _freebsd_generic_network_status(int *n)
 {
    struct ifmibdata *ifmd;
@@ -30,7 +14,7 @@ _freebsd_generic_network_status(int *n)
    if (!ifmd)
      return NULL;
 
-   net_iface_t **ifaces = NULL;
+   Eina_List *list = NULL;
 
    for (i = 1; i <= count; i++) {
         int mib[] = {
@@ -39,27 +23,25 @@ _freebsd_generic_network_status(int *n)
         len = sizeof(*ifmd);
         if (sysctl(mib, 6, ifmd, &len, NULL, 0) < 0) continue;
 
-        net_iface_t *iface = malloc(sizeof(net_iface_t));
+        Network_Interface *iface = calloc(1, sizeof(Network_Interface));
         if (iface)
           {
              snprintf(iface->name, sizeof(iface->name), "%s",
                       ifmd->ifmd_name);
-             iface->xfer.in = ifmd->ifmd_data.ifi_ibytes;
-             iface->xfer.out = ifmd->ifmd_data.ifi_obytes;
-             void *t = realloc(ifaces, (1 + 1 + *n) * sizeof(net_iface_t *));
-             ifaces = t;
-             ifaces[(*n)++] = iface;
+             iface->total_in = ifmd->ifmd_data.ifi_ibytes;
+             iface->total_out = ifmd->ifmd_data.ifi_obytes;
+             list = eina_list_append(list, iface);
            }
      }
    free(ifmd);
 
-   return ifaces;
+   return list;
 }
 
 #endif
 
 #if defined(__OpenBSD__)
-static net_iface_t **
+static Eina_List *
 _openbsd_generic_network_status(int *n)
 {
    struct ifaddrs *interfaces, *ifa;
@@ -71,7 +53,7 @@ _openbsd_generic_network_status(int *n)
    if (sock < 0)
      return NULL;
 
-   net_iface_t **ifaces = NULL;
+   Eina_List *list = NULL;
 
    for (ifa = interfaces; ifa; ifa = ifa->ifa_next) {
         struct ifreq ifreq;
@@ -92,38 +74,35 @@ _openbsd_generic_network_status(int *n)
         if (!LINK_STATE_IS_UP(ifi->ifi_link_state))
           continue;
 
-        net_iface_t *iface = malloc(sizeof(net_iface_t));
+        Network_Interface *iface = calloc(1, sizeof(Network_Interface));
         if (iface)
           {
              snprintf(iface->name, sizeof(iface->name), "%s",
                       ifa->ifa_name);
-             iface->xfer.in = ifi->ifi_ibytes;
-             iface->xfer.out = ifi->ifi_obytes;
-             void *t = realloc(ifaces, (1 + 1 + *n) * sizeof(net_iface_t *));
-             ifaces = t;
-             ifaces[(*n)++] = iface;
+             iface->total_in = ifi->ifi_ibytes;
+             iface->total_out = ifi->ifi_obytes;
+             list = eina_list_append(list, iface);
           }
      }
    close(sock);
 
-   return ifaces;
+   return list;
 }
 
 #endif
 
 #if defined(__linux__)
-static net_iface_t **
-_linux_generic_network_status(int *n)
+static Eina_List *
+_linux_generic_network_status(void)
 {
    FILE *f;
    char buf[4096], name[128];
    unsigned long int tmp_in, tmp_out, dummy;
+   Eina_List *list = NULL;
 
    f = fopen("/proc/net/dev", "r");
    if (!f) return NULL;
 
-   net_iface_t **ifaces = NULL;
-
    while (fgets(buf, sizeof(buf), f))
      {
         if (17 == sscanf(buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu "
@@ -132,37 +111,34 @@ _linux_generic_network_status(int *n)
                          &tmp_out, &dummy, &dummy, &dummy, &dummy, &dummy,
                          &dummy, &dummy))
           {
-             net_iface_t *iface = malloc(sizeof(net_iface_t));
+             Network_Interface *iface = calloc(1, sizeof(Network_Interface));
              if (iface)
                {
                   name[strlen(name)-1] = '\0';
                   snprintf(iface->name, sizeof(iface->name), "%s", name);
-                  iface->xfer.in = tmp_in;
-                  iface->xfer.out = tmp_out;
-                  void *t = realloc(ifaces, (1 + 1 + *n) * sizeof(net_iface_t 
*));
-                  ifaces = t;
-                  ifaces[(*n)++] = iface;
+                  iface->total_in = tmp_in;
+                  iface->total_out = tmp_out;
+                  list = eina_list_append(list, iface);
                }
           }
      }
 
    fclose(f);
 
-   return ifaces;
+   return list;
 }
 
 #endif
 
-net_iface_t **
-system_network_ifaces_get(int *n)
+Eina_List *
+network_interfaces_find(void)
 {
-   *n = 0;
 #if defined(__linux__)
-   return _linux_generic_network_status(n);
+   return _linux_generic_network_status();
 #elif defined(__MacOS__) || defined(__FreeBSD__) || defined(__DragonFly__)
-   return _freebsd_generic_network_status(n);
+   return _freebsd_generic_network_status();
 #elif defined(__OpenBSD__)
-   return _openbsd_generic_network_status(n);
+   return _openbsd_generic_network_status();
 #else
    return NULL;
 #endif
diff --git a/src/bin/next/machine/sensors.x b/src/bin/next/machine/sensors.x
index 871c30e..0e1c5fb 100644
--- a/src/bin/next/machine/sensors.x
+++ b/src/bin/next/machine/sensors.x
@@ -1,21 +1,5 @@
-/*
- * Copyright (c) 2018 Alastair Roy Poole <nets...@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
 void
-system_sensor_thermal_free(sensor_t *sensor)
+sensor_free(Sensor *sensor)
 {
    if (sensor->name)
      free(sensor->name);
@@ -28,20 +12,8 @@ system_sensor_thermal_free(sensor_t *sensor)
    free(sensor);
 }
 
-void
-system_sensors_thermal_free(sensor_t **sensors, int count)
-{
-   for (int i = 0; i < count; i++)
-     {
-        sensor_t *sensor = sensors[i];
-        system_sensor_thermal_free(sensor);
-     }
-   if (sensors)
-     free(sensors);
-}
-
-int
-system_sensor_thermal_get(sensor_t *sensor)
+Eina_Bool
+sensor_check(Sensor *sensor)
 {
 #if defined(__linux__)
    char *d = file_contents(sensor->path);
@@ -75,13 +47,12 @@ system_sensor_thermal_get(sensor_t *sensor)
    return 0;
 }
 
-sensor_t **
-system_sensors_thermal_get(int *sensor_count)
+Eina_List *
+sensors_find(void)
 {
-   sensor_t **sensors = NULL;
-   *sensor_count = 0;
+   Eina_List *sensors = NULL;
 #if defined(__OpenBSD__)
-   sensor_t *sensor;
+   Sensor *sensor;
    int mibs[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
    int devn, n;
    struct sensor snsr;
@@ -114,26 +85,31 @@ system_sensors_thermal_get(int *sensor_count)
         if (snsr.type != SENSOR_TEMP)
           continue;
 
-        void *t = realloc(sensors, (1 + *sensor_count) * sizeof(sensor_t *));
-        sensors = t;
-        sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
-        sensor->name = strdup(snsrdev.xname);
-        sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C)
-        memcpy(sensor->mibs, &mibs, sizeof(mibs));
+        sensor = calloc(1, sizeof(Sensor));
+        if (sensor)
+          {
+             sensor->name = strdup(snsrdev.xname);
+             sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C)
+             memcpy(sensor->mibs, &mibs, sizeof(mibs));
+
+             sensors = eina_list_append(sensors, sensor);
+          }
      }
 #elif defined(__FreeBSD__) || defined(__DragonFly__)
-   sensor_t *sensor;
+   Sensor *sensor;
    int value;
    char buf[256];
    size_t len = sizeof(value);
 
    if ((sysctlbyname("hw.acpi.thermal.tz0.temperature", &value, &len, NULL, 
0)) != -1)
      {
-        void *t = realloc(sensors, (1 + *sensor_count) * sizeof(sensor_t *));
-        sensors = t;
-        sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
-        sensor->name = strdup("hw.acpi.thermal.tz0.temperature");
-        sensor->value = (float) (value -  2732) / 10;
+        sensor = calloc(1, sizeof(Sensor));
+        if (sensor)
+          {
+             sensor->name = strdup("hw.acpi.thermal.tz0.temperature");
+             sensor->value = (float) (value -  2732) / 10;
+             sensors = eina_list_append(sensors, sensor);
+          }
      }
 
    int n = system_cpu_count_get();
@@ -144,16 +120,17 @@ system_sensors_thermal_get(int *sensor_count)
         snprintf(buf, sizeof(buf), "dev.cpu.%i.temperature", i);
         if ((sysctlbyname(buf, &value, &len, NULL, 0)) != -1)
           {
-             void *t = realloc(sensors, (1 + *sensor_count) * sizeof(sensor_t 
*));
-             sensors = t;
-             sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
-             sensor->name = strdup(buf);
-             sensor->value = (float) (value - 2732) / 10;
+             sensor = calloc(1, sizeof(Sensor));
+             if (sensor)
+               {
+                  sensor->name = strdup(buf);
+                  sensor->value = (float) (value - 2732) / 10;
+                  sensors = eina_list_append(sensors, sensor);
+               }
           }
      }
-
 #elif defined(__linux__)
-   sensor_t *sensor;
+   Sensor *sensor;
    DIR *dir;
    struct dirent *dh;
    char buf[4096];
@@ -198,29 +175,26 @@ system_sensors_thermal_get(int *sensor_count)
                        continue;
                     }
 
-                  void *t = realloc(sensors, (1 + (*sensor_count)) * 
sizeof(sensor_t *));
-                  sensors = t;
-                  sensors[(*sensor_count)++] = sensor = calloc(1, 
sizeof(sensor_t));
-
-                  snprintf(buf, sizeof(buf), "%s/name", link);
-                  sensor->name = file_contents(buf);
-                  if (sensor->name)
-                    strimmer(sensor->name);
+                  sensor = calloc(1, sizeof(Sensor));
+                  if (sensor)
+                    {
+                       snprintf(buf, sizeof(buf), "%s/name", link);
+                       sensor->name = file_contents(buf);
 
-                  snprintf(buf, sizeof(buf), "%s/temp%d_label", link, id);
-                  sensor->child_name = file_contents(buf);
-                  if (sensor->child_name)
-                    strimmer(sensor->child_name);
+                       snprintf(buf, sizeof(buf), "%s/temp%d_label", link, id);
+                       sensor->child_name = file_contents(buf);
 
-                  snprintf(buf, sizeof(buf), "%s/temp%d_input", link, id);
-                  sensor->path = strdup(buf);
-                  char *d = file_contents(buf);
-                  if (d)
-                    {
-                       sensor->value = atoi(d);
-                       if (sensor->value) sensor->value /= 1000;
-                       free(d);
-                    }
+                       snprintf(buf, sizeof(buf), "%s/temp%d_input", link, id);
+                       sensor->path = strdup(buf);
+                       char *d = file_contents(buf);
+                       if (d)
+                         {
+                            sensor->value = atoi(d);
+                            if (sensor->value) sensor->value /= 1000;
+                            free(d);
+                         }
+                        sensors = eina_list_append(sensors, sensor);
+                     }
                   seen[idx++] = id;
                }
              free(names[i]);
@@ -315,7 +289,6 @@ batteries_find(void)
 
    free(names);
 #endif
-puts("AYE");
    return list;
 }
 
@@ -328,35 +301,6 @@ battery_free(Battery *bat)
    free(bat);
 }
 
-static int
-_power_battery_count_get(power_t *power)
-{
-#if defined(__OpenBSD__)
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-   int n_units, fd;
-   char name[256];
-
-   fd = open("/dev/acpi", O_RDONLY);
-   if (fd != -1)
-     {
-        if (ioctl(fd, ACPIIO_BATT_GET_UNITS, &n_units) != -1)
-          power->battery_count = n_units;
-        close(fd);
-     }
-
-   power->batteries = malloc(power->battery_count * sizeof(bat_t **));
-   for (int i = 0; i < power->battery_count; i++) {
-        power->batteries[i] = calloc(1, sizeof(bat_t));
-        snprintf(name, sizeof(name), "hw.acpi.battery.%i", i);
-        power->batteries[i]->name = strdup(name);
-        power->batteries[i]->present = true;
-     }
-#elif defined(__linux__)
-#endif
-
-   return 0; 
-}
-
 void
 battery_check(Battery *bat)
 {
@@ -405,7 +349,7 @@ battery_check(Battery *bat)
    snprintf(path, sizeof(path), "/sys/class/power_supply/%s", bat->name);
 
    if ((stat(path, &st) < 0) || (!S_ISDIR(st.st_mode)))
-     return; 
+     return;
 
    link = realpath(path, NULL);
    if (!link) return;
@@ -478,58 +422,20 @@ done:
       bat->percent = 100 * (charge_full / charge_current);
 }
 
-static void
-_battery_state_get(power_t *power)
-{
-#if defined(__OpenBSD__)
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-   int fd, i;
-   union acpi_battery_ioctl_arg battio;
 
-   if ((fd = open("/dev/acpi", O_RDONLY)) == -1) return;
-
-   for (i = 0; i < power->battery_count; i++) {
-        battio.unit = i;
-        if (ioctl(fd, ACPIIO_BATT_GET_BIX, &battio) != -1)
-          {
-             if (battio.bif.lfcap == 0)
-               power->batteries[i]->charge_full = battio.bif.dcap;
-             else
-               power->batteries[i]->charge_full = battio.bif.lfcap;
-          }
-        power->batteries[i]->vendor = strdup(battio.bix.oeminfo);
-        power->batteries[i]->model = strdup(battio.bix.model);
-        battio.unit = i;
-        if (ioctl(fd, ACPIIO_BATT_GET_BST, &battio) != -1)
-          power->batteries[i]->charge_current = battio.bst.cap;
-
-        if (battio.bst.state == ACPI_BATT_STAT_NOT_PRESENT)
-          power->batteries[i]->present = false;
-     }
-   close(fd);
-
-#elif defined(__linux__)
-#endif
-}
-
-void
-system_power_state_get(power_t *power)
+Eina_Bool
+power_ac(void)
 {
-   memset(power, 0, sizeof(power_t));
+   Eina_Bool have_ac = 0;
 #if defined(__OpenBSD__)
    struct sensor snsr;
    size_t slen = sizeof(struct sensor);
-#endif
-
-   if (!_power_battery_count_get(power))
-     return;
 
-#if defined(__OpenBSD__)
    power->mibs[3] = 9;
    power->mibs[4] = 0;
 
    if (sysctl(power->mibs, 5, &snsr, &slen, NULL, 0) != -1)
-     power->have_ac = (int)snsr.value;
+     have_ac = (int)snsr.value;
 #elif defined(__FreeBSD__) || defined(__DragonFly__)
    int val, fd;
 
@@ -537,22 +443,18 @@ system_power_state_get(power_t *power)
    if (fd != -1)
      {
         if (ioctl(fd, ACPIIO_ACAD_GET_STATUS, &val) != -1)
-          power->have_ac = val;
+          have_ac = val;
         close(fd);
      }
 #elif defined(__linux__)
    char *buf = file_contents("/sys/class/power_supply/AC/online");
    if (buf)
      {
-        power->have_ac = atoi(buf);
+        have_ac = atoi(buf);
         free(buf);
      }
 #endif
 
-   _battery_state_get(power);
+   return have_ac;
 }
 
-void
-system_power_state_free(power_t *power)
-{
-}

-- 


Reply via email to