diff options
Diffstat (limited to 'src/print_run_watch.c')
-rw-r--r-- | src/print_run_watch.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/print_run_watch.c b/src/print_run_watch.c index c806d8e..f93c3a0 100644 --- a/src/print_run_watch.c +++ b/src/print_run_watch.c @@ -1,36 +1,32 @@ #include <stdio.h> #include <string.h> +#include <yajl/yajl_gen.h> #include "i3status.h" -void print_run_watch(const char *title, const char *pidfile, const char *format) { +void print_run_watch(yajl_gen json_gen, char *buffer, const char *title, const char *pidfile, const char *format) { bool running = process_runs(pidfile); const char *walk; + char *outwalk = buffer; - if (output_format == O_I3BAR) - printf("{\"name\":\"run_watch\", \"instance\": \"%s\", ", pidfile); + INSTANCE(pidfile); - printf("%s", (running ? color("color_good") : color("color_bad"))); - - if (output_format == O_I3BAR) - printf("\"full_text\":\""); + START_COLOR((running ? "color_good" : "color_bad")); for (walk = format; *walk != '\0'; walk++) { if (*walk != '%') { - putchar(*walk); + *(outwalk++) = *walk; continue; } if (strncmp(walk+1, "title", strlen("title")) == 0) { - printf("%s", title); + outwalk += sprintf(outwalk, "%s", title); walk += strlen("title"); } else if (strncmp(walk+1, "status", strlen("status")) == 0) { - printf("%s", (running ? "yes" : "no")); + outwalk += sprintf(outwalk, "%s", (running ? "yes" : "no")); walk += strlen("status"); } } - printf("%s", endcolor()); - - if (output_format == O_I3BAR) - printf("\"}"); + END_COLOR; + OUTPUT_FULL_TEXT(buffer); } |