summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Beutner <gunnar@beutner.name>2014-04-21 22:49:51 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2014-04-27 19:59:06 +0200
commit1b3890572ed5c19ce51634c1a071c0a24eb61ddf (patch)
tree7ddf8d1a205be752f148acd6d92a25096c41a04d
parent5e03bd8e8cf4ea41aef6cf5d7f115afa7565c861 (diff)
downloadmonitoring-plugins-1b38905.tar.gz
Make check_disk work on Windows.
-rw-r--r--plugins/check_disk.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index c12b5d98..925dfa82 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -52,6 +52,11 @@ const char *email = "devel@monitoring-plugins.org";
52#endif 52#endif
53#include "regex.h" 53#include "regex.h"
54 54
55#ifdef __CYGWIN__
56# include <windows.h>
57# undef ERROR
58# define ERROR -1
59#endif
55 60
56/* If nonzero, show inode information. */ 61/* If nonzero, show inode information. */
57static int inode_format = 1; 62static int inode_format = 1;
@@ -175,6 +180,10 @@ main (int argc, char **argv)
175 struct fs_usage fsp, tmpfsp; 180 struct fs_usage fsp, tmpfsp;
176 struct parameter_list *temp_list, *path; 181 struct parameter_list *temp_list, *path;
177 182
183#ifdef __CYGWIN__
184 char mountdir[32];
185#endif
186
178 preamble = strdup (" - free space:"); 187 preamble = strdup (" - free space:");
179 output = strdup (""); 188 output = strdup ("");
180 details = strdup (""); 189 details = strdup ("");
@@ -221,7 +230,6 @@ main (int argc, char **argv)
221 230
222 /* Process for every path in list */ 231 /* Process for every path in list */
223 for (path = path_select_list; path; path=path->name_next) { 232 for (path = path_select_list; path; path=path->name_next) {
224
225 if (verbose >= 3 && path->freespace_percent->warning != NULL && path->freespace_percent->critical != NULL) 233 if (verbose >= 3 && path->freespace_percent->warning != NULL && path->freespace_percent->critical != NULL)
226 printf("Thresholds(pct) for %s warn: %f crit %f\n",path->name, path->freespace_percent->warning->end, 234 printf("Thresholds(pct) for %s warn: %f crit %f\n",path->name, path->freespace_percent->warning->end,
227 path->freespace_percent->critical->end); 235 path->freespace_percent->critical->end);
@@ -234,6 +242,13 @@ main (int argc, char **argv)
234 242
235 me = path->best_match; 243 me = path->best_match;
236 244
245#ifdef __CYGWIN__
246 if (strncmp(path->name, "/cygdrive/", 10) != 0 || strlen(path->name) > 11)
247 continue;
248 snprintf(mountdir, sizeof(mountdir), "%s:\\", me->me_mountdir + 10);
249 if (GetDriveType(mountdir) != DRIVE_FIXED)
250 me->me_remote = 1;
251#endif
237 /* Filters */ 252 /* Filters */
238 253
239 /* Remove filesystems already seen */ 254 /* Remove filesystems already seen */
@@ -970,6 +985,10 @@ get_stats (struct parameter_list *p, struct fs_usage *fsp) {
970 } else { 985 } else {
971 /* find all group members */ 986 /* find all group members */
972 for (p_list = path_select_list; p_list; p_list=p_list->name_next) { 987 for (p_list = path_select_list; p_list; p_list=p_list->name_next) {
988#ifdef __CYGWIN__
989 if (strncmp(p_list->name, "/cygdrive/", 10) != 0)
990 continue;
991#endif
973 if (p_list->group && ! (strcmp(p_list->group, p->group))) { 992 if (p_list->group && ! (strcmp(p_list->group, p->group))) {
974 stat_path(p_list); 993 stat_path(p_list);
975 get_fs_usage (p_list->best_match->me_mountdir, p_list->best_match->me_devname, &tmpfsp); 994 get_fs_usage (p_list->best_match->me_mountdir, p_list->best_match->me_devname, &tmpfsp);