ttemp.c - spoon - [fork] customized build of spoon, the dwm status utility
(HTM) git clone git://src.adamsgaard.dk/spoon
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
ttemp.c (851B)
---
1 #include <err.h>
2 #include <stdio.h>
3
4 #ifdef __OpenBSD__
5 #include <sys/sysctl.h>
6 #include <sys/time.h>
7 #include <sys/sensors.h>
8
9 int
10 tempread(void *arg, char *buf, size_t len)
11 {
12 int mib[5];
13 struct sensor temp;
14 size_t sz;
15
16 mib[0] = CTL_HW;
17 mib[1] = HW_SENSORS;
18 mib[2] = 0; /* cpu0 */
19 mib[3] = SENSOR_TEMP;
20 mib[4] = 0; /* temp0 */
21 sz = sizeof(temp);
22 if (sysctl(mib, 5, &temp, &sz, NULL, 0) == -1)
23 return -1;
24 /* temp.value is in kelvin so convert to celsius for display */
25 snprintf(buf, len, "%lld", (temp.value - 273150000) / 1000000);
26 return 0;
27 }
28 #elif __linux__
29 int
30 tempread(void *arg, char *buf, size_t len)
31 {
32 char *path = arg;
33 FILE *fp;
34 int temp;
35
36 fp = fopen(path, "r");
37 if (fp == NULL) {
38 warn("fopen %s", path);
39 return -1;
40 }
41 fscanf(fp, "%d", &temp);
42 fclose(fp);
43 snprintf(buf, len, "%d", temp / 1000);
44 return 0;
45 }
46 #endif