summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenny Baumann <BenBE@geshi.org>2024-03-10 17:00:31 +0100
committercgzones <cgzones@googlemail.com>2024-03-27 20:06:42 +0100
commit49f0ca2d70908140566af667492e63e7ad546321 (patch)
treec3597e6e553c6e946c0479a92ffe9d72249d9a37
parent4806b4ebfb045c9162b8a2a0213f7b9bc87e1710 (diff)
Avoid glibc FILE API for loadavg
-rw-r--r--linux/Platform.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/linux/Platform.c b/linux/Platform.c
index e3f6fa60..ca289e6c 100644
--- a/linux/Platform.c
+++ b/linux/Platform.c
@@ -277,25 +277,26 @@ int Platform_getUptime(void) {
}
void Platform_getLoadAverage(double* one, double* five, double* fifteen) {
- FILE* fd = fopen(PROCDIR "/loadavg", "r");
- if (!fd)
- goto err;
+ char loaddata[128] = {0};
- double scanOne, scanFive, scanFifteen;
- int r = fscanf(fd, "%lf %lf %lf", &scanOne, &scanFive, &scanFifteen);
- fclose(fd);
+ *one = NAN;
+ *five = NAN;
+ *fifteen = NAN;
+
+ ssize_t loadread = xReadfile(PROCDIR "/loadavg", loaddata, sizeof(loaddata));
+ if (loadread < 1)
+ return;
+
+ double scanOne = NAN;
+ double scanFive = NAN;
+ double scanFifteen = NAN;
+ int r = sscanf(loaddata, "%lf %lf %lf", &scanOne, &scanFive, &scanFifteen);
if (r != 3)
- goto err;
+ return;
*one = scanOne;
*five = scanFive;
*fifteen = scanFifteen;
- return;
-
-err:
- *one = NAN;
- *five = NAN;
- *fifteen = NAN;
}
pid_t Platform_getMaxPid(void) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy