|
[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 |