summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_procs.c8
-rw-r--r--plugins/tests/test_utils.c5
-rw-r--r--plugins/utils.c27
-rw-r--r--plugins/utils.h3
4 files changed, 35 insertions, 8 deletions
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 01acc93..d05020b 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -96,9 +96,6 @@ main (int argc, char **argv)
96 char procstat[8]; 96 char procstat[8];
97 char procetime[MAX_INPUT_BUFFER] = { '\0' }; 97 char procetime[MAX_INPUT_BUFFER] = { '\0' };
98 char *procargs; 98 char *procargs;
99#ifdef HAVE_BASENAME
100 char *temp_string;
101#endif
102 99
103 const char *zombie = "Z"; 100 const char *zombie = "Z";
104 101
@@ -179,10 +176,7 @@ main (int argc, char **argv)
179 strip (procargs); 176 strip (procargs);
180 177
181 /* Some ps return full pathname for command. This removes path */ 178 /* Some ps return full pathname for command. This removes path */
182#ifdef HAVE_BASENAME 179 procprog = basename(procprog);
183 temp_string = strdup(procprog);
184 procprog = basename(temp_string);
185#endif /* HAVE_BASENAME */
186 180
187 /* we need to convert the elapsed time to seconds */ 181 /* we need to convert the elapsed time to seconds */
188 procseconds = convert_to_seconds(procetime); 182 procseconds = convert_to_seconds(procetime);
diff --git a/plugins/tests/test_utils.c b/plugins/tests/test_utils.c
index 5aa0028..67c304a 100644
--- a/plugins/tests/test_utils.c
+++ b/plugins/tests/test_utils.c
@@ -34,7 +34,7 @@ main (int argc, char **argv)
34 thresholds *thresholds = NULL; 34 thresholds *thresholds = NULL;
35 int rc; 35 int rc;
36 36
37 plan_tests(73); 37 plan_tests(74);
38 38
39 range = parse_range_string("6"); 39 range = parse_range_string("6");
40 ok( range != NULL, "'6' is valid range"); 40 ok( range != NULL, "'6' is valid range");
@@ -165,6 +165,9 @@ main (int argc, char **argv)
165 ok( strcmp(test, "everything") == 0, "everything okay"); 165 ok( strcmp(test, "everything") == 0, "everything okay");
166 free(test); 166 free(test);
167 167
168 test = basename("/here/is/a/path");
169 ok( strcmp(test, "path") == 0, "basename okay");
170
168 return exit_status(); 171 return exit_status();
169} 172}
170 173
diff --git a/plugins/utils.c b/plugins/utils.c
index bb4ffbc..f2593a1 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -5,6 +5,7 @@
5 * Library of useful functions for plugins 5 * Library of useful functions for plugins
6 * 6 *
7 * Copyright (c) 2000 Karl DeBisschop (karl@debisschop.net) 7 * Copyright (c) 2000 Karl DeBisschop (karl@debisschop.net)
8 * Copyright (c) 2006 Nagios Plugin Development Team
8 * License: GPL 9 * License: GPL
9 * 10 *
10 * $Revision$ 11 * $Revision$
@@ -639,6 +640,32 @@ strpcat (char *dest, const char *src, const char *str)
639 return dest; 640 return dest;
640} 641}
641 642
643#ifndef HAVE_BASENAME
644/* function modified from coreutils base_name function - see ACKNOWLEDGEMENTS */
645char *basename(const char *path) {
646 char const *base = path;
647 char const *p;
648 for (p = base; *p; p++) {
649 if (*p == '/') {
650 /* Treat multiple adjacent slashes like single slash */
651 do p++;
652 while (*p == '/');
653
654 /* If filename ends in slash, use trailing slash
655 as basename if no non-slashes found */
656 if (! *p) {
657 if (*base == '/')
658 base = p - 1;
659 break;
660 }
661
662 /* *p is non-slash preceded by slash */
663 base = p;
664 }
665 }
666 return (char *) base;
667}
668#endif
642 669
643/****************************************************************************** 670/******************************************************************************
644 * 671 *
diff --git a/plugins/utils.h b/plugins/utils.h
index 4bbe33d..ed6243d 100644
--- a/plugins/utils.h
+++ b/plugins/utils.h
@@ -80,6 +80,9 @@ void set_thresholds(thresholds **, char *, char *);
80int check_range(double, range *); 80int check_range(double, range *);
81int get_status(double, thresholds *); 81int get_status(double, thresholds *);
82 82
83/* I think this needs to be defined even if you use the system version */
84char *basename(const char *path);
85
83#ifndef HAVE_GETTIMEOFDAY 86#ifndef HAVE_GETTIMEOFDAY
84int gettimeofday(struct timeval *, struct timezone *); 87int gettimeofday(struct timeval *, struct timezone *);
85#endif 88#endif