From 14087edeb9647045046d1766be769057b83f3304 Mon Sep 17 00:00:00 2001 From: marschap Date: Sun, 10 Dec 2006 16:14:32 +0000 Subject: [PATCH] use symbolic names for getloadavg() parameters, stricter error checks; enable getloadavg() for Linux, a few little cleanups for Linux. --- clients/lcdproc/machine.h | 16 ++++++++++++++++ clients/lcdproc/machine_Darwin.c | 6 +++--- clients/lcdproc/machine_FreeBSD.c | 6 +++--- clients/lcdproc/machine_Linux.c | 26 ++++++++++++++++---------- clients/lcdproc/machine_NetBSD.c | 6 +++--- clients/lcdproc/machine_OpenBSD.c | 6 +++--- clients/lcdproc/machine_SunOS.c | 6 +++--- 7 files changed, 47 insertions(+), 25 deletions(-) diff --git a/clients/lcdproc/machine.h b/clients/lcdproc/machine.h index 67fc5da..15e2655 100644 --- a/clients/lcdproc/machine.h +++ b/clients/lcdproc/machine.h @@ -4,6 +4,22 @@ #include "shared/LL.h" +#ifndef LOADAVG_NSTATS +# define LOADAVG_NSTATS 3 +#endif + +#ifndef LOADAVG_1MIN +# define LOADAVG_1MIN 0 +#endif + +#ifndef LOADAVG_5MIN +# define LOADAVG_5MIN 1 +#endif + +#ifndef LOADAVG_15MIN +# define LOADAVG_15MIN 2 +#endif + typedef struct { diff --git a/clients/lcdproc/machine_Darwin.c b/clients/lcdproc/machine_Darwin.c index 520fec2..9139a11 100644 --- a/clients/lcdproc/machine_Darwin.c +++ b/clients/lcdproc/machine_Darwin.c @@ -263,12 +263,12 @@ int machine_get_load(load_type *curr_load) int machine_get_loadavg(double *load) { - double loadavg[1]; + double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, 1) == -1) + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) return(FALSE); - *load = loadavg[0]; + *load = loadavg[LOADAVG_1MIN]; return(TRUE); } diff --git a/clients/lcdproc/machine_FreeBSD.c b/clients/lcdproc/machine_FreeBSD.c index 3e340a1..d535cde 100644 --- a/clients/lcdproc/machine_FreeBSD.c +++ b/clients/lcdproc/machine_FreeBSD.c @@ -232,12 +232,12 @@ int machine_get_load(load_type *curr_load) int machine_get_loadavg(double *load) { - double loadavg[1]; + double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, 1) == -1) + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) return(FALSE); - *load = loadavg[0]; + *load = loadavg[LOADAVG_1MIN]; return(TRUE); } diff --git a/clients/lcdproc/machine_Linux.c b/clients/lcdproc/machine_Linux.c index 5fb1077..a34f861 100644 --- a/clients/lcdproc/machine_Linux.c +++ b/clients/lcdproc/machine_Linux.c @@ -26,8 +26,14 @@ # endif #endif +#ifdef HAVE_GETLOADAVG +# define USE_GETLOADAVG +#endif + #ifdef USE_GETLOADAVG -# include +# ifdef HAVE_SYS_LOADAVG_H +# include +# endif #endif #ifdef HAVE_PROCFS_H @@ -147,11 +153,12 @@ reread (int f, char *errmsg) exit(1); } -int +long getentry (const char *tag, const char *bufptr) { char *tail; - int retval, len = strlen (tag); + int len = strlen(tag); + long retval; while (bufptr != NULL) { if (*bufptr == '\n') @@ -292,7 +299,7 @@ int machine_get_load(load_type *curr_load) static load_type last_load = { 0, 0, 0, 0, 0 }; load_type load; - reread(load_fd, "get_load:"); + reread(load_fd, "get_load"); sscanf(procbuf, "%*s %lu %lu %lu %lu\n", &load.user, &load.nice, &load.system, &load.idle); load.total = load.user + load.nice + load.system + load.idle; @@ -311,14 +318,13 @@ int machine_get_loadavg(double *load) #ifdef USE_GETLOADAVG double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, LOADAVG_NSTATS) < 0) { + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) { perror("getloadavg"); /* ToDo: correct error reporting */ - *load = 1.; return(FALSE); } *load = loadavg[LOADAVG_1MIN]; #else - reread(loadavg_fd, "get_load:"); + reread(loadavg_fd, "get_loadavg"); sscanf(procbuf, "%lf", load); #endif return(TRUE); @@ -326,7 +332,7 @@ int machine_get_loadavg(double *load) int machine_get_meminfo(meminfo_type *result) { - reread(meminfo_fd, "get_meminfo:"); + reread(meminfo_fd, "get_meminfo"); result[0].total = getentry("MemTotal:", procbuf); result[0].free = getentry("MemFree:", procbuf); result[0].shared = getentry("MemShared:", procbuf); @@ -452,7 +458,7 @@ int machine_get_smpload(load_type *result, int *numcpus) // Look for lines starting with "cpu0", "cpu1", etc. token = strtok(procbuf, "\n"); - while (token) { + while (token != NULL) { if ((strlen(token) > 3) && (!strncmp(token, "cpu", 3)) && isdigit(token[3])) { sscanf(token, "%*s %lu %lu %lu %lu", &curr_load[*numcpus].user, &curr_load[*numcpus].nice, &curr_load[*numcpus].system, &curr_load[*numcpus].idle); @@ -479,7 +485,7 @@ int machine_get_uptime(double *up, double *idle) { double local_up, local_idle; - reread(uptime_fd, "get_uptime:"); + reread(uptime_fd, "get_uptime"); sscanf(procbuf, "%lf %lf", &local_up, &local_idle); if (up != NULL) *up = local_up; diff --git a/clients/lcdproc/machine_NetBSD.c b/clients/lcdproc/machine_NetBSD.c index 80acb43..5090474 100644 --- a/clients/lcdproc/machine_NetBSD.c +++ b/clients/lcdproc/machine_NetBSD.c @@ -229,12 +229,12 @@ int machine_get_load(load_type *curr_load) int machine_get_loadavg(double *load) { - double loadavg[1]; + double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, 1) == -1) + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) return(FALSE); - *load = loadavg[0]; + *load = loadavg[LOADAVG_1MIN]; return(TRUE); } diff --git a/clients/lcdproc/machine_OpenBSD.c b/clients/lcdproc/machine_OpenBSD.c index c9474ae..c68375c 100644 --- a/clients/lcdproc/machine_OpenBSD.c +++ b/clients/lcdproc/machine_OpenBSD.c @@ -234,12 +234,12 @@ int machine_get_load(load_type *curr_load) int machine_get_loadavg(double *load) { - double loadavg[1]; + double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, 1) == -1) + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) return(FALSE); - *load = loadavg[0]; + *load = loadavg[LOADAVG_1MIN]; return(TRUE); } diff --git a/clients/lcdproc/machine_SunOS.c b/clients/lcdproc/machine_SunOS.c index 782d88f..50f702b 100644 --- a/clients/lcdproc/machine_SunOS.c +++ b/clients/lcdproc/machine_SunOS.c @@ -193,12 +193,12 @@ int machine_get_load(load_type *curr_load) int machine_get_loadavg(double *load) { - double loadavg[1]; + double loadavg[LOADAVG_NSTATS]; - if (getloadavg(loadavg, 1) == -1) + if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) return(FALSE); - *load = loadavg[0]; + *load = loadavg[LOADAVG_1MIN]; return(TRUE); }