X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/b759662983a159da8a3c361f4f222287b2e43331..b792b7ab69c24bedf8147c734a849ae0c54da1dc:/components/temperature.c?ds=sidebyside

diff --git a/components/temperature.c b/components/temperature.c
index 812ae77..2c57853 100644
--- a/components/temperature.c
+++ b/components/temperature.c
@@ -4,18 +4,21 @@
 #include "../util.h"
 
 #if defined(__linux__)
+	#include <inttypes.h>
+
 	const char *
 	temp(const char *file)
 	{
-		int temp;
+		uint64_t temp;
+
+		if(pscanf(file, "%" PRIu64, &temp) != 1) {
+			return NULL;
+		}
 
-		return (pscanf(file, "%d", &temp) == 1) ?
-		       bprintf("%d", temp / 1000) : NULL;
+		return bprintf("%" PRIu64, temp / 1000);
 	}
 #elif defined(__OpenBSD__)
-	#include <errno.h>
 	#include <stdio.h>
-	#include <string.h>
 	#include <sys/time.h> /* before <sys/sensors.h> for struct timeval */
 	#include <sys/sensors.h>
 	#include <sys/sysctl.h>
@@ -36,12 +39,11 @@
 		size = sizeof(temp);
 
 		if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) {
-			fprintf(stderr, "sysctl 'SENSOR_TEMP': %s\n",
-			        strerror(errno));
+			warn("sysctl 'SENSOR_TEMP':");
 			return NULL;
 		}
 
 		/* kelvin to celsius */
-		return bprintf("%d", (temp.value - 273150000) / 1000000);
+		return bprintf("%d", (temp.value - 273150000) / 1E6);
 	}
 #endif