From c03e1ad081bc080cb8085bc14a94e4965a8e119e Mon Sep 17 00:00:00 2001 From: Marc Sánchez Date: Thu, 7 Sep 2017 22:25:09 +0200 Subject: Only turn on ordering procs by CPU usage if PS_USES_PROCPCPU Disable sorting of procs by CPU usage on check_load if procpcpu is not present on PS_VARLIST --- configure.ac | 4 ++++ plugins/check_load.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/configure.ac b/configure.ac index bf129956..08a0e782 100644 --- a/configure.ac +++ b/configure.ac @@ -1016,6 +1016,10 @@ if test -n "$ac_cv_ps_varlist" ; then AC_DEFINE(PS_USES_PROCETIME,"yes", [Whether the ps utility uses the "procetime" field]) fi + if echo "$ac_cv_ps_varlist" | grep "procpcpu" >/dev/null; then + AC_DEFINE(PS_USES_PROCPCPU,"yes", + [Whether the ps utility uses the "procpcpu" field]) + fi fi AC_PATH_PROG(PATH_TO_PING,ping) diff --git a/plugins/check_load.c b/plugins/check_load.c index 6fd895f2..bf7b94b4 100644 --- a/plugins/check_load.c +++ b/plugins/check_load.c @@ -349,6 +349,7 @@ print_usage (void) printf ("%s [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15 [-n NUMBER_OF_PROCS]\n", progname); } +#ifdef PS_USES_PROCPCPU int cmpstringp(const void *p1, const void *p2) { int procuid = 0; int procpid = 0; @@ -367,6 +368,7 @@ int cmpstringp(const void *p1, const void *p2) { sscanf (* (char * const *) p2, PS_FORMAT, PS_VARLIST); return procpcpu1 < procpcpu; } +#endif /* PS_USES_PROCPCPU */ static int print_top_consuming_processes() { int i = 0; @@ -379,7 +381,9 @@ static int print_top_consuming_processes() { fprintf(stderr, _("some error occurred getting procs list.\n")); return STATE_UNKNOWN; } +#ifdef PS_USES_PROCPCPU qsort(chld_out.line + 1, chld_out.lines - 1, sizeof(char*), cmpstringp); +#endif /* PS_USES_PROCPCPU */ int lines_to_show = chld_out.lines < (n_procs_to_show + 1) ? chld_out.lines : n_procs_to_show + 1; for (i = 0; i < lines_to_show; i += 1) { -- cgit v1.2.3-74-g34f1