diff options
Diffstat (limited to 'plugins/check_disk.c')
| -rw-r--r-- | plugins/check_disk.c | 56 |
1 files changed, 4 insertions, 52 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index eb573f5f..e73a0083 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -51,9 +51,6 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 51 | # include <limits.h> | 51 | # include <limits.h> |
| 52 | #endif | 52 | #endif |
| 53 | #include "regex.h" | 53 | #include "regex.h" |
| 54 | #if HAVE_PTHREAD_H | ||
| 55 | # include <pthread.h> | ||
| 56 | #endif | ||
| 57 | 54 | ||
| 58 | #ifdef __CYGWIN__ | 55 | #ifdef __CYGWIN__ |
| 59 | # include <windows.h> | 56 | # include <windows.h> |
| @@ -61,9 +58,6 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 61 | # define ERROR -1 | 58 | # define ERROR -1 |
| 62 | #endif | 59 | #endif |
| 63 | 60 | ||
| 64 | /* If nonzero, show inode information. */ | ||
| 65 | static int inode_format = 1; | ||
| 66 | |||
| 67 | /* If nonzero, show even filesystems with zero size or | 61 | /* If nonzero, show even filesystems with zero size or |
| 68 | uninteresting types. */ | 62 | uninteresting types. */ |
| 69 | static int show_all_fs = 1; | 63 | static int show_all_fs = 1; |
| @@ -133,7 +127,6 @@ void print_help (void); | |||
| 133 | void print_usage (void); | 127 | void print_usage (void); |
| 134 | double calculate_percent(uintmax_t, uintmax_t); | 128 | double calculate_percent(uintmax_t, uintmax_t); |
| 135 | void stat_path (struct parameter_list *p); | 129 | void stat_path (struct parameter_list *p); |
| 136 | void *do_stat_path (void *p); | ||
| 137 | void get_stats (struct parameter_list *p, struct fs_usage *fsp); | 130 | void get_stats (struct parameter_list *p, struct fs_usage *fsp); |
| 138 | void get_path_stats (struct parameter_list *p, struct fs_usage *fsp); | 131 | void get_path_stats (struct parameter_list *p, struct fs_usage *fsp); |
| 139 | 132 | ||
| @@ -182,7 +175,7 @@ main (int argc, char **argv) | |||
| 182 | int temp_result; | 175 | int temp_result; |
| 183 | 176 | ||
| 184 | struct mount_entry *me; | 177 | struct mount_entry *me; |
| 185 | struct fs_usage fsp, tmpfsp; | 178 | struct fs_usage fsp; |
| 186 | struct parameter_list *temp_list, *path; | 179 | struct parameter_list *temp_list, *path; |
| 187 | 180 | ||
| 188 | #ifdef __CYGWIN__ | 181 | #ifdef __CYGWIN__ |
| @@ -427,9 +420,7 @@ process_arguments (int argc, char **argv) | |||
| 427 | int c, err; | 420 | int c, err; |
| 428 | struct parameter_list *se; | 421 | struct parameter_list *se; |
| 429 | struct parameter_list *temp_list = NULL, *previous = NULL; | 422 | struct parameter_list *temp_list = NULL, *previous = NULL; |
| 430 | struct parameter_list *temp_path_select_list = NULL; | 423 | struct mount_entry *me; |
| 431 | struct mount_entry *me, *temp_me; | ||
| 432 | int result = OK; | ||
| 433 | regex_t re; | 424 | regex_t re; |
| 434 | int cflags = REG_NOSUB | REG_EXTENDED; | 425 | int cflags = REG_NOSUB | REG_EXTENDED; |
| 435 | int default_cflags = cflags; | 426 | int default_cflags = cflags; |
| @@ -766,10 +757,10 @@ process_arguments (int argc, char **argv) | |||
| 766 | break; | 757 | break; |
| 767 | case 'V': /* version */ | 758 | case 'V': /* version */ |
| 768 | print_revision (progname, NP_VERSION); | 759 | print_revision (progname, NP_VERSION); |
| 769 | exit (STATE_OK); | 760 | exit (STATE_UNKNOWN); |
| 770 | case 'h': /* help */ | 761 | case 'h': /* help */ |
| 771 | print_help (); | 762 | print_help (); |
| 772 | exit (STATE_OK); | 763 | exit (STATE_UNKNOWN); |
| 773 | case '?': /* help */ | 764 | case '?': /* help */ |
| 774 | usage (_("Unknown argument")); | 765 | usage (_("Unknown argument")); |
| 775 | } | 766 | } |
| @@ -972,44 +963,6 @@ print_usage (void) | |||
| 972 | void | 963 | void |
| 973 | stat_path (struct parameter_list *p) | 964 | stat_path (struct parameter_list *p) |
| 974 | { | 965 | { |
| 975 | #ifdef HAVE_PTHREAD_H | ||
| 976 | pthread_t stat_thread; | ||
| 977 | int statdone = 0; | ||
| 978 | int timer = timeout_interval; | ||
| 979 | struct timespec req, rem; | ||
| 980 | |||
| 981 | req.tv_sec = 0; | ||
| 982 | pthread_create(&stat_thread, NULL, do_stat_path, p); | ||
| 983 | while (timer-- > 0) { | ||
| 984 | req.tv_nsec = 10000000; | ||
| 985 | nanosleep(&req, &rem); | ||
| 986 | if (pthread_kill(stat_thread, 0)) { | ||
| 987 | statdone = 1; | ||
| 988 | break; | ||
| 989 | } else { | ||
| 990 | req.tv_nsec = 990000000; | ||
| 991 | nanosleep(&req, &rem); | ||
| 992 | } | ||
| 993 | } | ||
| 994 | if (statdone == 1) { | ||
| 995 | pthread_join(stat_thread, NULL); | ||
| 996 | } else { | ||
| 997 | pthread_detach(stat_thread); | ||
| 998 | if (verbose >= 3) | ||
| 999 | printf("stat did not return within %ds on %s\n", timeout_interval, p->name); | ||
| 1000 | printf("DISK %s - ", _("CRITICAL")); | ||
| 1001 | die (STATE_CRITICAL, _("%s %s: %s\n"), p->name, _("hangs"), _("Timeout")); | ||
| 1002 | } | ||
| 1003 | #else | ||
| 1004 | do_stat_path(p); | ||
| 1005 | #endif | ||
| 1006 | } | ||
| 1007 | |||
| 1008 | void * | ||
| 1009 | do_stat_path (void *in) | ||
| 1010 | { | ||
| 1011 | struct parameter_list *p = in; | ||
| 1012 | |||
| 1013 | /* Stat entry to check that dir exists and is accessible */ | 966 | /* Stat entry to check that dir exists and is accessible */ |
| 1014 | if (verbose >= 3) | 967 | if (verbose >= 3) |
| 1015 | printf("calling stat on %s\n", p->name); | 968 | printf("calling stat on %s\n", p->name); |
| @@ -1019,7 +972,6 @@ do_stat_path (void *in) | |||
| 1019 | printf("DISK %s - ", _("CRITICAL")); | 972 | printf("DISK %s - ", _("CRITICAL")); |
| 1020 | die (STATE_CRITICAL, _("%s %s: %s\n"), p->name, _("is not accessible"), strerror(errno)); | 973 | die (STATE_CRITICAL, _("%s %s: %s\n"), p->name, _("is not accessible"), strerror(errno)); |
| 1021 | } | 974 | } |
| 1022 | return NULL; | ||
| 1023 | } | 975 | } |
| 1024 | 976 | ||
| 1025 | 977 | ||
