Xinqi Bao's Git

Add FreeBSD support for netspeeds, entropy and ip components
[slstatus.git] / components / temperature.c
index 45fbc9b..8462d0f 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "../util.h"
 
+
 #if defined(__linux__)
        #include <stdint.h>
 
@@ -11,7 +12,7 @@
        {
                uintmax_t temp;
 
-               if(pscanf(file, "%ju", &temp) != 1) {
+               if (pscanf(file, "%ju", &temp) != 1) {
                        return NULL;
                }
 
                /* kelvin to celsius */
                return bprintf("%d", (temp.value - 273150000) / 1E6);
        }
+#elif defined(__FreeBSD__)
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <sys/sysctl.h>
+
+       const char *
+       temp(const char *zone)
+       {
+               char buf[256];
+               int temp;
+               size_t len;
+
+               len = sizeof(temp);
+               snprintf(buf, sizeof(buf), "hw.acpi.thermal.%s.temperature", zone);
+               if (sysctlbyname(buf, &temp, &len, NULL, 0) == -1
+                               || !len)
+                       return NULL;
+
+               /* kelvin to decimal celcius */
+               return bprintf("%d.%d", (temp - 2731) / 10, abs((temp - 2731) % 10));
+       }
 #endif