summaryrefslogtreecommitdiff
path: root/desktop/icewm/patches/icewm-1.3.7-thermal.patch
blob: f6b2cf71f0f5f01edb8680f747d071eb4fad5b3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
diff -uprN a/src/acpustatus.cc b/src/acpustatus.cc
--- a/src/acpustatus.cc	2010-10-31 15:09:36.000000000 +0100
+++ b/src/acpustatus.cc	2013-01-17 21:12:19.085715083 +0100
@@ -315,6 +315,37 @@ int CPUStatus::getAcpiTemp(char *tempbuf
         }
         closedir(dir);
     } 
+    else if ((dir = opendir("/sys/class/thermal")) != NULL) {
+        struct dirent *de;
+
+        while ((de = readdir(dir)) != NULL) {
+
+            int fd, seglen;
+
+            if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0)
+                continue;
+
+            sprintf(namebuf, "/sys/class/thermal/%s/temp", de->d_name);
+            fd = open(namebuf, O_RDONLY);
+            if (fd != -1) {
+                int len = read(fd, buf, sizeof(buf) - 1);
+                buf[len - 4] = '\0';
+                seglen = strlen(buf) + 4;
+                if (retbuflen + seglen >= buflen) {
+                    retbuflen = -retbuflen;
+                    close(fd);
+                    closedir(dir);
+                    break;
+                }
+                retbuflen += seglen;
+                strcat(tempbuf, "  ");
+                strncat(tempbuf, buf, seglen);
+                strcat(tempbuf, " C");
+                close(fd);
+            }
+        }
+        closedir(dir);
+    }
     return retbuflen;
 }