summary refs log tree commit diff stats
path: root/qobject/qjson.c
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2018-07-03 10:53:47 +0200
committerMarkus Armbruster <armbru@redhat.com>2018-07-03 23:18:56 +0200
commita193352ff9c7cd2cd07846118bc49921d0f53af8 (patch)
treec89a35a6fb781e57629832b4f95b086bdc90fa38 /qobject/qjson.c
parentcab5ad86b41af6deead6f9bd6edc8a2353eb3e90 (diff)
downloadfocaccia-qemu-a193352ff9c7cd2cd07846118bc49921d0f53af8.tar.gz
focaccia-qemu-a193352ff9c7cd2cd07846118bc49921d0f53af8.zip
qobject: New qdict_from_jsonf_nofail()
Many uses of qobject_from_jsonf() convert JSON objects.  Create new
convenience function qdict_from_jsonf_nofail() that includes the
conversion to QDict.  The next few commits will put it to use.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180703085358.13941-22-armbru@redhat.com>
Diffstat (limited to 'qobject/qjson.c')
-rw-r--r--qobject/qjson.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/qobject/qjson.c b/qobject/qjson.c
index 9816a65c7d..0df3120202 100644
--- a/qobject/qjson.c
+++ b/qobject/qjson.c
@@ -76,6 +76,24 @@ QObject *qobject_from_jsonf(const char *string, ...)
     return obj;
 }
 
+/*
+ * Parse @string as JSON object with %-escapes interpolated.
+ * Abort on error.  Do not use with untrusted @string.
+ * Return the resulting QDict.  It is never null.
+ */
+QDict *qdict_from_jsonf_nofail(const char *string, ...)
+{
+    QDict *obj;
+    va_list ap;
+
+    va_start(ap, string);
+    obj = qobject_to(QDict, qobject_from_jsonv(string, &ap, &error_abort));
+    va_end(ap);
+
+    assert(obj);
+    return obj;
+}
+
 typedef struct ToJsonIterState
 {
     int indent;