diff options
Diffstat (limited to 'plugins/check_disk.c')
| -rw-r--r-- | plugins/check_disk.c | 82 |
1 files changed, 28 insertions, 54 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index 9ce4a324..bde95631 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -37,9 +37,10 @@ | |||
| 37 | #include <stdarg.h> | 37 | #include <stdarg.h> |
| 38 | 38 | ||
| 39 | #define PROGNAME "check_disk" | 39 | #define PROGNAME "check_disk" |
| 40 | #define REVISION "$Revision$" | ||
| 41 | #define COPYRIGHT "2000-2002" | ||
| 40 | 42 | ||
| 41 | int process_arguments (int, char **); | 43 | int process_arguments (int, char **); |
| 42 | int call_getopt (int, char **); | ||
| 43 | int validate_arguments (void); | 44 | int validate_arguments (void); |
| 44 | int check_disk (int usp, int free_disk); | 45 | int check_disk (int usp, int free_disk); |
| 45 | void print_help (void); | 46 | void print_help (void); |
| @@ -49,7 +50,7 @@ int w_df = -1; | |||
| 49 | int c_df = -1; | 50 | int c_df = -1; |
| 50 | float w_dfp = -1.0; | 51 | float w_dfp = -1.0; |
| 51 | float c_dfp = -1.0; | 52 | float c_dfp = -1.0; |
| 52 | char *path = NULL; | 53 | char *path = ""; |
| 53 | int verbose = FALSE; | 54 | int verbose = FALSE; |
| 54 | int display_mntp = FALSE; | 55 | int display_mntp = FALSE; |
| 55 | 56 | ||
| @@ -73,7 +74,7 @@ main (int argc, char **argv) | |||
| 73 | if (process_arguments (argc, argv) != OK) | 74 | if (process_arguments (argc, argv) != OK) |
| 74 | usage ("Could not parse arguments\n"); | 75 | usage ("Could not parse arguments\n"); |
| 75 | 76 | ||
| 76 | command_line = ssprintf (command_line, "%s %s", DF_COMMAND, path); | 77 | asprintf (&command_line, "%s %s", DF_COMMAND, path); |
| 77 | 78 | ||
| 78 | if (verbose) | 79 | if (verbose) |
| 79 | printf ("%s ==> ", command_line); | 80 | printf ("%s ==> ", command_line); |
| @@ -175,41 +176,6 @@ process_arguments (int argc, char **argv) | |||
| 175 | { | 176 | { |
| 176 | int c; | 177 | int c; |
| 177 | 178 | ||
| 178 | if (argc < 2) | ||
| 179 | return ERROR; | ||
| 180 | |||
| 181 | for (c = 1; c < argc; c++) { | ||
| 182 | if (strcmp ("-to", argv[c]) == 0) { | ||
| 183 | strcpy (argv[c], "-t"); | ||
| 184 | } | ||
| 185 | } | ||
| 186 | |||
| 187 | c = 0; | ||
| 188 | while ((c += (call_getopt (argc - c, &argv[c]))) < argc) { | ||
| 189 | |||
| 190 | if (w_dfp == -1 && is_intnonneg (argv[c])) | ||
| 191 | w_dfp = (100.0 - atof (argv[c])); | ||
| 192 | else if (c_dfp == -1 && is_intnonneg (argv[c])) | ||
| 193 | c_dfp = (100.0 - atof (argv[c])); | ||
| 194 | else if (path == NULL || path[0] == 0) | ||
| 195 | path = strscpy (path, argv[c]); | ||
| 196 | } | ||
| 197 | |||
| 198 | if (path == NULL) { | ||
| 199 | path = malloc (1); | ||
| 200 | if (path == NULL) | ||
| 201 | terminate (STATE_UNKNOWN, "Could not malloc empty path\n"); | ||
| 202 | path[0] = 0; | ||
| 203 | } | ||
| 204 | |||
| 205 | return validate_arguments (); | ||
| 206 | } | ||
| 207 | |||
| 208 | int | ||
| 209 | call_getopt (int argc, char **argv) | ||
| 210 | { | ||
| 211 | int c, i = 0; | ||
| 212 | |||
| 213 | #ifdef HAVE_GETOPT_H | 179 | #ifdef HAVE_GETOPT_H |
| 214 | int option_index = 0; | 180 | int option_index = 0; |
| 215 | static struct option long_options[] = { | 181 | static struct option long_options[] = { |
| @@ -226,28 +192,25 @@ call_getopt (int argc, char **argv) | |||
| 226 | }; | 192 | }; |
| 227 | #endif | 193 | #endif |
| 228 | 194 | ||
| 195 | if (argc < 2) | ||
| 196 | return ERROR; | ||
| 197 | |||
| 198 | for (c = 1; c < argc; c++) | ||
| 199 | if (strcmp ("-to", argv[c]) == 0) | ||
| 200 | strcpy (argv[c], "-t"); | ||
| 201 | |||
| 229 | while (1) { | 202 | while (1) { |
| 230 | #ifdef HAVE_GETOPT_H | 203 | #ifdef HAVE_GETOPT_H |
| 231 | c = | 204 | c = |
| 232 | getopt_long (argc, argv, "+?Vhvt:c:w:p:m", long_options, &option_index); | 205 | getopt_long (argc, argv, "Vhvt:c:w:p:m", long_options, &option_index); |
| 233 | #else | 206 | #else |
| 234 | c = getopt (argc, argv, "+?Vhvt:c:w:p:m"); | 207 | c = getopt (argc, argv, "Vhvt:c:w:p:m"); |
| 235 | #endif | 208 | #endif |
| 236 | 209 | ||
| 237 | i++; | 210 | if (c == -1 || c == EOF) |
| 238 | |||
| 239 | if (c == -1 || c == EOF || c == 1) | ||
| 240 | break; | 211 | break; |
| 241 | 212 | ||
| 242 | switch (c) { | 213 | switch (c) { |
| 243 | case 't': | ||
| 244 | case 'c': | ||
| 245 | case 'w': | ||
| 246 | case 'p': | ||
| 247 | i++; | ||
| 248 | } | ||
| 249 | |||
| 250 | switch (c) { | ||
| 251 | case 'w': /* warning time threshold */ | 214 | case 'w': /* warning time threshold */ |
| 252 | if (is_intnonneg (optarg)) { | 215 | if (is_intnonneg (optarg)) { |
| 253 | w_df = atoi (optarg); | 216 | w_df = atoi (optarg); |
| @@ -298,7 +261,7 @@ call_getopt (int argc, char **argv) | |||
| 298 | display_mntp = TRUE; | 261 | display_mntp = TRUE; |
| 299 | break; | 262 | break; |
| 300 | case 'V': /* version */ | 263 | case 'V': /* version */ |
| 301 | print_revision (my_basename (argv[0]), "$Revision$"); | 264 | print_revision (PROGNAME, REVISION); |
| 302 | exit (STATE_OK); | 265 | exit (STATE_OK); |
| 303 | case 'h': /* help */ | 266 | case 'h': /* help */ |
| 304 | print_help (); | 267 | print_help (); |
| @@ -308,7 +271,18 @@ call_getopt (int argc, char **argv) | |||
| 308 | break; | 271 | break; |
| 309 | } | 272 | } |
| 310 | } | 273 | } |
| 311 | return i; | 274 | |
| 275 | c = optind; | ||
| 276 | if (w_dfp == -1 && argc > c && is_intnonneg (argv[c])) | ||
| 277 | w_dfp = (100.0 - atof (argv[c++])); | ||
| 278 | |||
| 279 | if (c_dfp == -1 && argc > c && is_intnonneg (argv[c])) | ||
| 280 | c_dfp = (100.0 - atof (argv[c++])); | ||
| 281 | |||
| 282 | if (argc > c && strlen (path) == 0) | ||
| 283 | path = argv[c++]; | ||
| 284 | |||
| 285 | return validate_arguments (); | ||
| 312 | } | 286 | } |
| 313 | 287 | ||
| 314 | int | 288 | int |
| @@ -358,7 +332,7 @@ check_disk (usp, free_disk) | |||
| 358 | void | 332 | void |
| 359 | print_help (void) | 333 | print_help (void) |
| 360 | { | 334 | { |
| 361 | print_revision (PROGNAME, "$Revision$"); | 335 | print_revision (PROGNAME, REVISION); |
| 362 | printf | 336 | printf |
| 363 | ("Copyright (c) 2000 Ethan Galstad/Karl DeBisschop\n\n" | 337 | ("Copyright (c) 2000 Ethan Galstad/Karl DeBisschop\n\n" |
| 364 | "This plugin will check the percent of used disk space on a mounted\n" | 338 | "This plugin will check the percent of used disk space on a mounted\n" |
