Code

- Cleanup minor compile errors on Irix
[nagiosplug.git] / plugins / check_procs.c
index 15ec76f5895956c9e5b8af769fd54850006a1bbb..3f40e087c51ed6f4c92131deb62498a1d9d896f0 100644 (file)
@@ -85,16 +85,20 @@ main (int argc, char **argv)
        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";
 
@@ -107,7 +111,6 @@ main (int argc, char **argv)
        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, "");
@@ -123,6 +126,9 @@ main (int argc, char **argv)
        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"));
@@ -172,25 +178,22 @@ main (int argc, char **argv)
                        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;
@@ -639,8 +642,8 @@ convert_to_seconds(char *etime) {
                (minutes * 60) +
                seconds;
 
-       if (verbose >= 3) {
-               printf("seconds: %d\n", total);
+       if (verbose >= 3 && metric == METRIC_ELAPSED) {
+                       printf("seconds: %d\n", total);
        }
        return total;
 }