[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 16/32] libxl_json: libxl__json_object_to_json
Allow to generate a JSON string from a libxl__json_object, usefull for debugging. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxl/libxl_internal.h | 3 +++ tools/libxl/libxl_json.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 8c3625a243..7f200e7a46 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -2129,6 +2129,9 @@ _hidden void libxl__json_object_free(libxl__gc *gc_opt, _hidden libxl__json_object *libxl__json_parse(libxl__gc *gc_opt, const char *s); +_hidden char *libxl__json_object_to_json(libxl__gc *gc, + const libxl__json_object *args); + /* Based on /local/domain/$domid/dm-version xenstore key * default is qemu xen traditional */ _hidden int libxl__device_model_version_running(libxl__gc *gc, uint32_t domid); diff --git a/tools/libxl/libxl_json.c b/tools/libxl/libxl_json.c index b7f9077f0d..16cdd5bda3 100644 --- a/tools/libxl/libxl_json.c +++ b/tools/libxl/libxl_json.c @@ -1017,6 +1017,42 @@ out: return ret; } +char *libxl__json_object_to_json(libxl__gc *gc, + const libxl__json_object *args) +{ + const unsigned char *buf; + libxl_yajl_length len; + yajl_gen_status s; + yajl_gen hand; + char *ret = NULL; + int rc; + + if (!args) + return NULL; + + hand = libxl_yajl_gen_alloc(NULL); + + if (!hand) { + return NULL; + } + + rc = libxl__json_object_to_yajl_gen(gc, hand, args); + if (rc) + goto out; + + s = yajl_gen_get_buf(hand, &buf, &len); + + if (s) { + goto out; + } + + ret = libxl__strndup(gc, (const char *)buf, len); + +out: + yajl_gen_free(hand); + return ret; +} + yajl_gen_status libxl__uint64_gen_json(yajl_gen hand, uint64_t val) { char *num; -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |