On 2025-08-08 10:55, Anthony PERARD wrote:
From: Anthony PERARD <anthony.per...@vates.tech>
Convert yajl_gen to json_object from lib json-c.
And make use of it in qmp_prepare_cmd(), which can be compiled with
either lib.
Signed-off-by: Anthony PERARD <anthony.per...@vates.tech>
---
diff --git a/tools/libs/light/libxl_json.c b/tools/libs/light/libxl_json.c
index 44ee6e213f..b26ac901d6 100644
--- a/tools/libs/light/libxl_json.c
+++ b/tools/libs/light/libxl_json.c
@@ -631,6 +631,100 @@ const libxl__json_object *libxl__json_map_get(const char
*key,
return NULL;
}
+#ifdef HAVE_LIBJSONC
+int libxl__json_object_to_json_object(libxl__gc *gc,
+ json_object **jso_out,
+ const libxl__json_object *obj)
+{
+ int idx = 0;
+ int rc, r;
+
+ switch (obj->type) {
+ case JSON_NULL:
+ *jso_out = json_object_new_null();
+ return 0;
+ case JSON_BOOL:
+ *jso_out = json_object_new_boolean(obj->u.b);
+ if (!*jso_out)
+ return ERROR_NOMEM;
+ return 0;
+ case JSON_INTEGER:
+ *jso_out = json_object_new_int64(obj->u.i);
+ if (!*jso_out)
+ return ERROR_NOMEM;
+ return 0;
+ case JSON_DOUBLE:
+ *jso_out = json_object_new_double(obj->u.d);
+ if (!*jso_out)
+ return ERROR_NOMEM;
+ return 0;
+ case JSON_NUMBER:
+ *jso_out = json_object_new_string(obj->u.string);
Is JSON_NUMBER calling json_object_new_string() correct? It looks like
the yajl code falls back to a string, so that is okay but surprising.
So I just want to double check. If so:
Reviewed-by: Jason Andryuk <jason.andr...@amd.com>
Thanks,
Jason
+ if (!*jso_out)
+ return ERROR_NOMEM;
+ return 0;