summaryrefslogtreecommitdiff
path: root/src/print_disk_info.c
diff options
context:
space:
mode:
authorMihai Coman <mihai.cmn@gmail.com>2016-11-14 22:10:19 +0200
committerMihai Coman <mihai.cmn@gmail.com>2016-11-15 01:09:05 +0200
commit9375959b68d7c80dbad53a6eb0df1035bb33c6ce (patch)
tree3dfa11dde08cf6ef11fdcc7d803aa576dd09958d /src/print_disk_info.c
parentb0af4e4c8543d8cdfd8bc7cd68b760d9d66e927c (diff)
Add 'format_below_threshold' option for 'disk' module
Add 'format_above_threshold' option for 'cpu_temperature' module Add 'format_above_threshold' option for 'cpu_usage' module Add 'format_above_threshold' option for 'load' module
Diffstat (limited to 'src/print_disk_info.c')
-rw-r--r--src/print_disk_info.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/print_disk_info.c b/src/print_disk_info.c
index 624a8e2..d343fb8 100644
--- a/src/print_disk_info.c
+++ b/src/print_disk_info.c
@@ -110,10 +110,12 @@ static bool below_threshold(struct statvfs buf, const char *prefix_type, const c
* human readable manner.
*
*/
-void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const char *format, const char *format_not_mounted, const char *prefix_type, const char *threshold_type, const double low_threshold) {
+void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const char *format, const char *format_below_threshold, const char *format_not_mounted, const char *prefix_type, const char *threshold_type, const double low_threshold) {
+ const char *selected_format = format;
const char *walk;
char *outwalk = buffer;
bool colorful_output = false;
+ bool mounted = false;
INSTANCE(path);
@@ -122,47 +124,48 @@ void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const ch
if (statfs(path, &buf) == -1)
return;
+
+ mounted = true;
#elif defined(__NetBSD__)
struct statvfs buf;
if (statvfs(path, &buf) == -1)
return;
+
+ mounted = true;
#else
struct statvfs buf;
- if (format_not_mounted == NULL) {
- format_not_mounted = "";
- }
-
if (statvfs(path, &buf) == -1) {
/* If statvfs errors, e.g., due to the path not existing,
- * we use the format for a not mounted device. */
- format = format_not_mounted;
+ * we consider the device not mounted. */
+ mounted = false;
} else {
FILE *mntentfile = setmntent("/etc/mtab", "r");
struct mntent *m;
- bool found = false;
while ((m = getmntent(mntentfile)) != NULL) {
if (strcmp(m->mnt_dir, path) == 0) {
- found = true;
+ mounted = true;
break;
}
}
endmntent(mntentfile);
-
- if (!found) {
- format = format_not_mounted;
- }
}
#endif
- if (low_threshold > 0 && below_threshold(buf, prefix_type, threshold_type, low_threshold)) {
+ if (!mounted) {
+ if (format_not_mounted == NULL)
+ format_not_mounted = "";
+ selected_format = format_not_mounted;
+ } else if (low_threshold > 0 && below_threshold(buf, prefix_type, threshold_type, low_threshold)) {
START_COLOR("color_bad");
colorful_output = true;
+ if (format_below_threshold != NULL)
+ selected_format = format_below_threshold;
}
- for (walk = format; *walk != '\0'; walk++) {
+ for (walk = selected_format; *walk != '\0'; walk++) {
if (*walk != '%') {
*(outwalk++) = *walk;
continue;