diff options
| -rw-r--r-- | src/print_battery_info.c | 41 | 
1 files changed, 11 insertions, 30 deletions
| diff --git a/src/print_battery_info.c b/src/print_battery_info.c index 6b20114..979d0c1 100644 --- a/src/print_battery_info.c +++ b/src/print_battery_info.c @@ -35,10 +35,7 @@   *   */  void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char *path, const char *format, const char *format_down, const char *status_chr, const char *status_bat, const char *status_unk, const char *status_full, int low_threshold, char *threshold_type, bool last_full_capacity, bool integer_battery_capacity, bool hide_seconds) { -    time_t empty_time; -    struct tm *empty_tm;      char buf[1024]; -    char emptytimebuf[256];      char consumptionbuf[256];      const char *walk, *last;      char *outwalk = buffer; @@ -52,7 +49,6 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char      float percentage_remaining = -1;      charging_status_t status = CS_DISCHARGING; -    memset(emptytimebuf, '\0', sizeof(emptytimebuf));      memset(consumptionbuf, '\0', sizeof(consumptionbuf));      static char batpath[512]; @@ -165,17 +161,6 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char              }          } -        empty_time = time(NULL); -        empty_time += seconds_remaining; -        empty_tm = localtime(&empty_time); - -        if (hide_seconds) -            (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d", -                           max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0)); -        else -            (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d:%02d", -                           max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0), max(empty_tm->tm_sec, 0)); -          (void)snprintf(consumptionbuf, sizeof(consumptionbuf), "%1.2fW",                         ((float)present_rate / 1000.0 / 1000.0));      } else { @@ -495,20 +480,6 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char          }      } -    empty_time = time(NULL); -    empty_time += seconds_remaining; -    empty_tm = localtime(&empty_time); - -    /* No need to show empty time if battery is charging */ -    if (status != CS_CHARGING) { -        if (hide_seconds) -            (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d", -                           max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0)); -        else -            (void)snprintf(emptytimebuf, sizeof(emptytimebuf), "%02d:%02d:%02d", -                           max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0), max(empty_tm->tm_sec, 0)); -    } -      (void)snprintf(consumptionbuf, sizeof(consumptionbuf), "%1.2fW",                     ((float)present_rate / 1000.0 / 1000.0));  #endif @@ -575,7 +546,17 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char              walk += strlen("remaining");              EAT_SPACE_FROM_OUTPUT_IF_NO_OUTPUT();          } else if (BEGINS_WITH(walk + 1, "emptytime")) { -            outwalk += sprintf(outwalk, "%s", emptytimebuf); +            if (seconds_remaining >= 0) { +                time_t empty_time = time(NULL) + seconds_remaining; +                struct tm *empty_tm = localtime(&empty_time); + +                if (hide_seconds) +                    outwalk += sprintf(outwalk, "%02d:%02d", +                                       max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0)); +                else +                    outwalk += sprintf(outwalk, "%02d:%02d:%02d", +                                       max(empty_tm->tm_hour, 0), max(empty_tm->tm_min, 0), max(empty_tm->tm_sec, 0)); +            }              walk += strlen("emptytime");              EAT_SPACE_FROM_OUTPUT_IF_NO_OUTPUT();          } else if (BEGINS_WITH(walk + 1, "consumption")) { | 
