From: "Carlos R. Mafra" <[email protected]>

Use the option --apple to enable it.

Signed-off-by: Carlos R. Mafra <[email protected]>
---
 src/cpu.c | 39 ++++++++++++++++++++++++++++-----------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/src/cpu.c b/src/cpu.c
index c9b7570..900a4e0 100644
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -103,23 +103,40 @@ void read_sysfs_temp(char *dir, char *file, double 
*value) {
         }
 }
 
+void read_applesmc_temp(char *file, double *value) {
+       char filename[256];
+       FILE *fp;
+
+       snprintf(filename, 256, "/sys/devices/platform/applesmc.768/%s", file);
+
+       fp = fopen(filename, "r");
+       if (fp) {
+               fscanf(fp, "%lf", value);
+                (*value) /= 1000.;
+               fclose(fp);
+        }
+}
+
 void cpuReadTemp()
 {
        DIR *dir;
        struct dirent *dirent;
        double cpuTemp = 0;
 
-       dir = opendir("/sys/class/thermal/");
-       if (!dir) {
-               printf("Could not open /sys/class/thermal\n");
-               return;
-       }
-
-       while ((dirent = readdir(dir))) {
-               if (strlen(dirent->d_name) < 3)
-                       continue;
-               read_sysfs_temp(dirent->d_name, "temp", &cpuTemp);
+       if (apple) {
+               read_applesmc_temp("temp8_input", &cpuTemp);
+       } else {
+               dir = opendir("/sys/class/thermal/");
+               if (!dir) {
+                       printf("Could not open /sys/class/thermal\n");
+                       return;
+               }
+               while ((dirent = readdir(dir))) {
+                       if (strlen(dirent->d_name) < 3)
+                               continue;
+                       read_sysfs_temp(dirent->d_name, "temp", &cpuTemp);
+               }
+               closedir(dir);
        }
        cpuState.Temp = cpuTemp;
-       closedir(dir);
 }
-- 
1.8.0.1


-- 
To unsubscribe, send mail to [email protected].

Reply via email to