diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 15ec76f5895956c9e5b8af769fd54850006a1bbb..3f40e087c51ed6f4c92131deb62498a1d9d896f0 100644 (file)
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
char *input_line;
char *procprog;
+ pid_t mypid = 0;
int procuid = 0;
+ int procpid = 0;
int procppid = 0;
int procvsz = 0;
int procrss = 0;
int procseconds = 0;
float procpcpu = 0;
char procstat[8];
- char procetime[MAX_INPUT_BUFFER];
+ char procetime[MAX_INPUT_BUFFER] = { '\0' };
char *procargs;
+#ifdef HAVE_BASENAME
char *temp_string;
+#endif
const char *zombie = "Z";
int warn = 0; /* number of processes in warn state */
int crit = 0; /* number of processes in crit state */
int i = 0;
-
int result = STATE_UNKNOWN;
setlocale (LC_ALL, "");
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));
+ /* get our pid */
+ mypid = getpid();
+
/* Set signal handling and alarm timeout */
if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
usage4 (_("Cannot catch SIGALRM"));
strip (procargs);
/* Some ps return full pathname for command. This removes path */
- temp_string = strtok ((char *)procprog, "/");
- while (temp_string) {
- strcpy(procprog, temp_string);
- temp_string = strtok (NULL, "/");
- }
+#ifdef HAVE_BASENAME
+ temp_string = strdup(procprog);
+ procprog = basename(temp_string);
+#endif /* HAVE_BASENAME */
/* we need to convert the elapsed time to seconds */
procseconds = convert_to_seconds(procetime);
if (verbose >= 3)
- printf ("%d %d %d %d %d %.2f %s %s %s %s\n",
+ printf ("%d %d %d %d %d %d %.2f %s %s %s %s\n",
procs, procuid, procvsz, procrss,
- procppid, procpcpu, procstat,
+ procpid, procppid, procpcpu, procstat,
procetime, procprog, procargs);
/* Ignore self */
- if (strcmp (procprog, progname) == 0) {
- continue;
- }
+ if (mypid == procpid) continue;
if ((options & STAT) && (strstr (statopts, procstat)))
resultsum |= STAT;
(minutes * 60) +
seconds;
- if (verbose >= 3) {
- printf("seconds: %d\n", total);
+ if (verbose >= 3 && metric == METRIC_ELAPSED) {
+ printf("seconds: %d\n", total);
}
return total;
}