diff options
| -rw-r--r-- | configure.in | 1 | ||||
| -rw-r--r-- | plugins/check_procs.c | 8 | ||||
| -rw-r--r-- | plugins/tests/test_utils.c | 5 | ||||
| -rw-r--r-- | plugins/utils.c | 27 | ||||
| -rw-r--r-- | plugins/utils.h | 3 |
5 files changed, 36 insertions, 8 deletions
diff --git a/configure.in b/configure.in index ae6253bd..1313b2f5 100644 --- a/configure.in +++ b/configure.in | |||
| @@ -600,6 +600,7 @@ AC_TRY_COMPILE([#include <sys/time.h>], | |||
| 600 | 600 | ||
| 601 | dnl Checks for library functions. | 601 | dnl Checks for library functions. |
| 602 | AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul floor) | 602 | AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul floor) |
| 603 | AC_CHECK_FUNCS(basename) | ||
| 603 | 604 | ||
| 604 | AC_MSG_CHECKING(return type of socket size) | 605 | AC_MSG_CHECKING(return type of socket size) |
| 605 | AC_TRY_COMPILE([#include <stdlib.h> | 606 | AC_TRY_COMPILE([#include <stdlib.h> |
diff --git a/plugins/check_procs.c b/plugins/check_procs.c index 01acc937..d05020b5 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 5aa0028a..67c304a3 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 bb4ffbc2..f2593a16 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 */ | ||
| 645 | char *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 4bbe33d0..ed6243df 100644 --- a/plugins/utils.h +++ b/plugins/utils.h | |||
| @@ -80,6 +80,9 @@ void set_thresholds(thresholds **, char *, char *); | |||
| 80 | int check_range(double, range *); | 80 | int check_range(double, range *); |
| 81 | int get_status(double, thresholds *); | 81 | int get_status(double, thresholds *); |
| 82 | 82 | ||
| 83 | /* I think this needs to be defined even if you use the system version */ | ||
| 84 | char *basename(const char *path); | ||
| 85 | |||
| 83 | #ifndef HAVE_GETTIMEOFDAY | 86 | #ifndef HAVE_GETTIMEOFDAY |
| 84 | int gettimeofday(struct timeval *, struct timezone *); | 87 | int gettimeofday(struct timeval *, struct timezone *); |
| 85 | #endif | 88 | #endif |
