static const char *rerender_opts(const char *json, int opts) { struct JsonContext *ctx; struct JsonValue *obj; static char buf[1024]; struct MBuf dst; memset(buf, 0, sizeof buf); mbuf_init_fixed_writer(&dst, buf, sizeof(buf)); ctx = json_new_context(NULL, 128); json_set_options(ctx, opts); obj = json_parse(ctx, json, strlen(json)); if (!obj) { snprintf(buf, sizeof(buf), "EPARSE: %s", json_strerror(ctx)); json_free_context(ctx); return buf; } if (!json_render(&dst, obj)) return "ERENDER"; if (!mbuf_write_byte(&dst, 0)) return "ENUL"; json_free_context(ctx); return buf; }
static const char *render(struct JsonValue *obj) { static char buf[1024]; struct MBuf dst; mbuf_init_fixed_writer(&dst, buf, sizeof(buf)); if (!json_render(&dst, obj)) return "ERENDER"; if (!mbuf_write_byte(&dst, 0)) return "EMEM"; return buf; }
static const char *lshow(const struct StrList *sl) { static char buf[128]; bool ok; struct MBuf mb; mbuf_init_fixed_writer(&mb, buf, sizeof(buf)); ok = strlist_foreach(sl, slshow, &mb); if (!ok) return "FAIL"; ok = mbuf_write_byte(&mb, 0); if (!ok) return "FAIL"; return buf; }