From 49f0ca2d70908140566af667492e63e7ad546321 Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Sun, 10 Mar 2024 17:00:31 +0100 Subject: Avoid glibc FILE API for loadavg --- linux/Platform.c | 27 ++++++++++++++------------- 1 file 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) { -- cgit v1.2.3