From 12b1bfa9b8485de88b0bda82821c021aee197673 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 25 Mar 2012 20:55:55 +0200 Subject: Properly output JSON with libyajl --- src/print_ipv6_addr.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/print_ipv6_addr.c') diff --git a/src/print_ipv6_addr.c b/src/print_ipv6_addr.c index 3ace6a2..3f1c81d 100644 --- a/src/print_ipv6_addr.c +++ b/src/print_ipv6_addr.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "i3status.h" @@ -109,30 +110,27 @@ static char *get_ipv6_addr() { return NULL; } -void print_ipv6_info(const char *format_up, const char *format_down) { +void print_ipv6_info(yajl_gen json_gen, char *buffer, const char *format_up, const char *format_down) { const char *walk; char *addr_string = get_ipv6_addr(); - - if (output_format == O_I3BAR) - printf("{\"name\":\"ipv6\", \"full_text\":\""); + char *outwalk = buffer; if (addr_string == NULL) { - printf("%s", format_down); + OUTPUT_FULL_TEXT(format_down); return; } for (walk = format_up; *walk != '\0'; walk++) { if (*walk != '%') { - putchar(*walk); + *(outwalk++) = *walk; continue; } if (strncmp(walk+1, "ip", strlen("ip")) == 0) { - printf("%s", addr_string); + outwalk += sprintf(outwalk, "%s", addr_string); walk += strlen("ip"); } } - if (output_format == O_I3BAR) - printf("\"}"); + OUTPUT_FULL_TEXT(buffer); } -- cgit v1.2.3