From 78c6aacfb50e602ea59db51fc19fe7c4cf370d7c Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Sun, 10 Mar 2024 17:08:04 +0100 Subject: Avoid glibc FILE API for maxpid --- linux/Platform.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/linux/Platform.c b/linux/Platform.c index ca289e6c..a47918fe 100644 --- a/linux/Platform.c +++ b/linux/Platform.c @@ -300,15 +300,21 @@ void Platform_getLoadAverage(double* one, double* five, double* fifteen) { } pid_t Platform_getMaxPid(void) { - pid_t maxPid = 4194303; - FILE* file = fopen(PROCDIR "/sys/kernel/pid_max", "r"); - if (!file) - return maxPid; - - int match = fscanf(file, "%32d", &maxPid); - (void) match; - fclose(file); - return maxPid; + char piddata[32] = {0}; + + ssize_t pidread = xReadfile(PROCDIR "/sys/kernel/pid_max", piddata, sizeof(piddata)); + if (pidread < 1) + goto err; + + int pidmax = 0; + int match = sscanf(piddata, "%32d", &pidmax); + if (match != 1) + goto err; + + return pidmax; + +err: + return 0x3FFFFF; // 4194303 } double Platform_setCPUValues(Meter* this, unsigned int cpu) { -- cgit v1.2.3