Xinqi Bao's Git

Add native OpenBSD support for mute/volume
[slstatus.git] / components / temperature.c
index d56cc0e..8462d0f 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "../util.h"
 
+
 #if defined(__linux__)
        #include <stdint.h>
 
                /* 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