[PATCH 3/6] util: json: Extract deflattening of keys into a separate function

Peter Krempa pkrempa at redhat.com
Thu Mar 19 19:36:00 UTC 2020


Extract the code so that there's a clean separation once we'll want do
do other steps.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/util/virjson.c | 29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/util/virjson.c b/src/util/virjson.c
index f308927fa0..65d6521789 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -2049,6 +2049,10 @@ virJSONStringReformat(const char *jsonstr,
 }


+static virJSONValuePtr
+virJSONValueObjectDeflattenKeys(virJSONValuePtr json);
+
+
 static int
 virJSONValueObjectDeflattenWorker(const char *key,
                                   virJSONValuePtr value,
@@ -2064,7 +2068,7 @@ virJSONValueObjectDeflattenWorker(const char *key,
     if (!strchr(key, '.')) {

         if (virJSONValueIsObject(value))
-            newval = virJSONValueObjectDeflatten(value);
+            newval = virJSONValueObjectDeflattenKeys(value);
         else
             newval = virJSONValueCopy(value);

@@ -2113,6 +2117,20 @@ virJSONValueObjectDeflattenWorker(const char *key,
 }


+static virJSONValuePtr
+virJSONValueObjectDeflattenKeys(virJSONValuePtr json)
+{
+    g_autoptr(virJSONValue) deflattened = virJSONValueNewObject();
+
+    if (virJSONValueObjectForeachKeyValue(json,
+                                          virJSONValueObjectDeflattenWorker,
+                                          deflattened) < 0)
+        return NULL;
+
+    return g_steal_pointer(&deflattened);
+}
+
+
 /**
  * virJSONValueObjectDeflatten:
  *
@@ -2128,12 +2146,5 @@ virJSONValueObjectDeflattenWorker(const char *key,
 virJSONValuePtr
 virJSONValueObjectDeflatten(virJSONValuePtr json)
 {
-    g_autoptr(virJSONValue) deflattened = virJSONValueNewObject();
-
-    if (virJSONValueObjectForeachKeyValue(json,
-                                          virJSONValueObjectDeflattenWorker,
-                                          deflattened) < 0)
-        return NULL;
-
-    return g_steal_pointer(&deflattened);
+    return virJSONValueObjectDeflattenKeys(json);
 }
-- 
2.24.1




More information about the libvir-list mailing list