diff options
| -rw-r--r-- | src/print_battery_info.c | 19 | 
1 files changed, 16 insertions, 3 deletions
| diff --git a/src/print_battery_info.c b/src/print_battery_info.c index 6878540..ae11348 100644 --- a/src/print_battery_info.c +++ b/src/print_battery_info.c @@ -157,6 +157,8 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char                                  && seconds_remaining < 60 * low_threshold) {                                  START_COLOR("color_bad");                                  colorful_output = true; +                        } else { +                            colorful_output = false;                          }                  } @@ -172,9 +174,17 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char                  (void)snprintf(consumptionbuf, sizeof(consumptionbuf), "%1.2fW",                          ((float)present_rate / 1000.0 / 1000.0)); - -                if (colorful_output) -                    END_COLOR; +        } else { +                /* On some systems, present_rate may not exist. Still, make sure +                 * we colorize the output if threshold_type is set to percentage +                 * (since we don't have any information on remaining time). */ +                if (status == CS_DISCHARGING && low_threshold > 0) { +                        if (strncmp(threshold_type, "percentage", strlen(threshold_type)) == 0 +                                && percentage_remaining < low_threshold) { +                                START_COLOR("color_bad"); +                                colorful_output = true; +                        } +                }          }  #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)          int state; @@ -323,5 +333,8 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char                  }          } +        if (colorful_output) +                END_COLOR; +          OUTPUT_FULL_TEXT(buffer);  } | 
