From: Watcom Hecht Date: Sat, 28 Mar 2015 20:00:33 +0000 (-0300) Subject: refactoring to avoid code duplication X-Git-Tag: 2.10~42^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=refs%2Fpull%2F15%2Fhead;p=i3%2Fi3status refactoring to avoid code duplication --- diff --git a/src/print_volume.c b/src/print_volume.c index bc469f3..d8766b7 100644 --- a/src/print_volume.c +++ b/src/print_volume.c @@ -27,6 +27,26 @@ #include "i3status.h" #include "queue.h" +static char *apply_volume_format(const char *fmt, char *outwalk, int ivolume) { + const char *walk = fmt; + + for (; *walk != '\0'; walk++) { + if (*walk != '%') { + *(outwalk++) = *walk; + continue; + } + if (BEGINS_WITH(walk + 1, "%")) { + outwalk += sprintf(outwalk, "%%"); + walk += strlen("%"); + } + if (BEGINS_WITH(walk + 1, "volume")) { + outwalk += sprintf(outwalk, "%d%%", ivolume); + walk += strlen("volume"); + } + } + return outwalk; +} + void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx) { char *outwalk = buffer; int pbval = 1; @@ -113,21 +133,8 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char * snd_mixer_close(m); snd_mixer_selem_id_free(sid); - const char *walk = fmt; - for (; *walk != '\0'; walk++) { - if (*walk != '%') { - *(outwalk++) = *walk; - continue; - } - if (BEGINS_WITH(walk + 1, "%")) { - outwalk += sprintf(outwalk, "%%"); - walk += strlen("%"); - } - if (BEGINS_WITH(walk + 1, "volume")) { - outwalk += sprintf(outwalk, "%d%%", avg); - walk += strlen("volume"); - } - } + outwalk = apply_volume_format(fmt, outwalk, avg); + #endif #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) char *mixerpath; @@ -162,21 +169,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char * pbval = 0; } - const char *walk = fmt; - for (; *walk != '\0'; walk++) { - if (*walk != '%') { - *(outwalk++) = *walk; - continue; - } - if (BEGINS_WITH(walk + 1, "%")) { - outwalk += sprintf(outwalk, "%%"); - walk += strlen("%"); - } - if (BEGINS_WITH(walk + 1, "volume")) { - outwalk += sprintf(outwalk, "%d%%", vol & 0x7f); - walk += strlen("volume"); - } - } + outwalk = apply_volume_format(fmt, outwalk, vol & 0x7f); close(mixfd); #endif