diff -urN nagios-plugins-1.4.15/plugins/check_disk.c nagios-plugins-1.4.15.new/plugins/check_disk.c --- nagios-plugins-1.4.15/plugins/check_disk.c 2010-07-27 22:47:16.000000000 +0200 +++ nagios-plugins-1.4.15.new/plugins/check_disk.c 2010-08-04 13:49:46.000000000 +0200 @@ -148,6 +148,7 @@ int path_selected = FALSE; char *group = NULL; struct stat *stat_buf; +int output_usage = FALSE; int @@ -173,7 +174,6 @@ struct parameter_list *temp_list, *path; struct name_list *seen = NULL; - preamble = strdup (" - free space:"); output = strdup (""); details = strdup (""); perf = strdup (""); @@ -191,6 +191,12 @@ if (process_arguments (argc, argv) == ERROR) usage4 (_("Could not parse arguments")); + if (output_usage) { + preamble = strdup (" - used space:"); + } else { + preamble = strdup (" - free space:"); + } + /* If a list of paths has not been selected, find entire mount list and create list of paths */ @@ -392,9 +398,9 @@ asprintf (&output, "%s %s %.0f %s (%.0f%%", output, (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, - dfree_units, + output_usage ? dused_units : dfree_units, units, - dfree_pct); + output_usage ? 100-dfree_pct : dfree_pct); if (dused_inodes_percent < 0) { asprintf(&output, "%s inode=-);", output); } else { @@ -495,6 +501,7 @@ {"verbose", no_argument, 0, 'v'}, {"quiet", no_argument, 0, 'q'}, {"clear", no_argument, 0, 'C'}, + {"usage", no_argument, 0, 'U'}, {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} @@ -510,7 +517,7 @@ strcpy (argv[c], "-t"); while (1) { - c = getopt_long (argc, argv, "+?VqhveCt:c:w:K:W:u:p:x:X:mklLg:R:r:i:I:MEA", longopts, &option); + c = getopt_long (argc, argv, "+?VqhveUCt:c:w:K:W:u:p:x:X:mklLg:R:r:i:I:MEA", longopts, &option); if (c == -1 || c == EOF) break; @@ -782,6 +789,9 @@ path_selected = FALSE; group = NULL; break; + case 'U': /* display used space */ + output_usage = TRUE; + break; case 'V': /* version */ print_revision (progname, NP_VERSION); exit (STATE_OK); @@ -958,6 +968,8 @@ printf (UT_VERBOSE); printf (" %s\n", "-X, --exclude-type=TYPE"); printf (" %s\n", _("Ignore all filesystems of indicated type (may be repeated)")); + printf (" %s\n", "-U, --usage"); + printf (" %s\n", _("Output used space not free space")); printf ("\n"); printf ("%s\n", _("Examples:")); @@ -980,7 +992,7 @@ printf ("%s\n", _("Usage:")); printf (" %s -w limit -c limit [-W limit] [-K limit] {-p path | -x device}\n", progname); printf ("[-C] [-E] [-e] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]\n"); - printf ("[-t timeout] [-u unit] [-v] [-X type]\n"); + printf ("[-t timeout] [-u unit] [-v] [-X type] [-U]\n"); } void