From: Piotr Domagalski Date: Tue, 28 Aug 2012 20:07:33 +0000 (+0200) Subject: Eat unnecessary space from the battery format str. X-Git-Tag: 2.6~8 X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3status;a=commitdiff_plain;h=fa4e9cdfb3147fbcfb9e42067a49652d0a0d7456 Eat unnecessary space from the battery format str. If the battery is not discharging it may be not possible to give information on remaining time or consumption. The resulting strings (%remaining, %consumption, %emptytime) are empty then. But because they are in the format string, the output string contains unnecessary spaces in this case. This commit makes i3status strip these spaces. --- diff --git a/src/print_battery_info.c b/src/print_battery_info.c index 202d9bb..4fbf411 100644 --- a/src/print_battery_info.c +++ b/src/print_battery_info.c @@ -1,4 +1,5 @@ // vim:ts=8:expandtab +#include #include #include #include @@ -266,6 +267,16 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char (charging ? "(CHR)" : apm_info.minutes_left)); #endif +#define EAT_SPACE_FROM_OUTPUT_IF_EMPTY(_buf) \ + do { \ + if (strlen(_buf) == 0) { \ + if (outwalk > buffer && isspace(outwalk[-1])) \ + outwalk--; \ + else if (isspace(*(walk+1))) \ + walk++; \ + } \ + } while (0) + for (walk = format; *walk != '\0'; walk++) { if (*walk != '%') { *(outwalk++) = *walk; @@ -281,12 +292,15 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char } else if (strncmp(walk+1, "remaining", strlen("remaining")) == 0) { outwalk += sprintf(outwalk, "%s", remainingbuf); walk += strlen("remaining"); + EAT_SPACE_FROM_OUTPUT_IF_EMPTY(remainingbuf); } else if (strncmp(walk+1, "emptytime", strlen("emptytime")) == 0) { outwalk += sprintf(outwalk, "%s", emptytimebuf); walk += strlen("emptytime"); + EAT_SPACE_FROM_OUTPUT_IF_EMPTY(emptytimebuf); } else if (strncmp(walk+1, "consumption", strlen("consumption")) == 0) { outwalk += sprintf(outwalk, "%s", consumptionbuf); walk += strlen("consumption"); + EAT_SPACE_FROM_OUTPUT_IF_EMPTY(consumptionbuf); } }