diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/check_disk.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index 2558f6d3..f9a9a847 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
@@ -63,6 +63,7 @@ const char *options = "\ | |||
63 | #include "utils.h" | 63 | #include "utils.h" |
64 | #include <stdarg.h> | 64 | #include <stdarg.h> |
65 | #include "../lib/fsusage.h" | 65 | #include "../lib/fsusage.h" |
66 | #include "../lib/mountlist.h" | ||
66 | 67 | ||
67 | /* If nonzero, show inode information. */ | 68 | /* If nonzero, show inode information. */ |
68 | static int inode_format; | 69 | static int inode_format; |
@@ -146,6 +147,8 @@ int verbose = 0; | |||
146 | int erronly = FALSE; | 147 | int erronly = FALSE; |
147 | int display_mntp = FALSE; | 148 | int display_mntp = FALSE; |
148 | 149 | ||
150 | /* Linked list of mounted filesystems. */ | ||
151 | static struct mount_entry *mount_list; | ||
149 | 152 | ||
150 | int | 153 | int |
151 | main (int argc, char **argv) | 154 | main (int argc, char **argv) |
@@ -162,22 +165,32 @@ main (int argc, char **argv) | |||
162 | char mntp[MAX_INPUT_BUFFER]; | 165 | char mntp[MAX_INPUT_BUFFER]; |
163 | char *output = ""; | 166 | char *output = ""; |
164 | 167 | ||
168 | struct mount_entry *me; | ||
165 | struct fs_usage fsp; | 169 | struct fs_usage fsp; |
166 | char *disk; | 170 | char *disk; |
167 | 171 | ||
168 | if (process_arguments (argc, argv) != OK) | 172 | if (process_arguments (argc, argv) != OK) |
169 | usage ("Could not parse arguments\n"); | 173 | usage ("Could not parse arguments\n"); |
170 | 174 | ||
171 | get_fs_usage (path, disk, &fsp); | 175 | mount_list = read_filesystem_list (0); |
176 | |||
177 | for (me = mount_list; me; me = me->me_next) { | ||
178 | get_fs_usage (me->me_mountdir, me->me_devname, &fsp); | ||
179 | if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) { | ||
180 | usp = (fsp.fsu_blocks - fsp.fsu_bavail) * 100 / fsp.fsu_blocks; | ||
181 | disk_result = check_disk (usp, fsp.fsu_bavail); | ||
182 | result = max_state (disk_result, result); | ||
183 | asprintf (&output, "%s %llu of %llu kB (%2.0f%%) free (%d-byte blocks) on %s (%s) %d\n", | ||
184 | output, | ||
185 | fsp.fsu_bavail*fsp.fsu_blocksize/1024, | ||
186 | fsp.fsu_blocks*fsp.fsu_blocksize/1024, | ||
187 | (double)fsp.fsu_bavail*100/fsp.fsu_blocks, | ||
188 | fsp.fsu_blocksize, | ||
189 | me->me_mountdir, | ||
190 | me->me_type, usp); | ||
191 | } | ||
192 | } | ||
172 | 193 | ||
173 | usp = (fsp.fsu_blocks - fsp.fsu_bavail) / fsp.fsu_blocks; | ||
174 | disk_result = check_disk (usp, fsp.fsu_bavail); | ||
175 | result = disk_result; | ||
176 | asprintf (&output, "%llu of %llu kB (%2.0f%%) free (%d-byte blocks)", | ||
177 | fsp.fsu_bavail*fsp.fsu_blocksize/1024, | ||
178 | fsp.fsu_blocks*fsp.fsu_blocksize/1024, | ||
179 | (double)fsp.fsu_bavail*100/fsp.fsu_blocks, | ||
180 | fsp.fsu_blocksize); | ||
181 | 194 | ||
182 | terminate (result, "DISK %s %s\n", state_text (result), output); | 195 | terminate (result, "DISK %s %s\n", state_text (result), output); |
183 | } | 196 | } |