[gnome-builder/gnome-builder-3-32] meson: handle filename/install_filename as an array of strings



commit 9f1a0bab6a972bd41033a4fcfda0ca08d56dc9f6
Author: Christian Hergert <chergert redhat com>
Date:   Sun Jun 2 16:13:33 2019 -0700

    meson: handle filename/install_filename as an array of strings
    
    Fixes #920

 .../meson/gbp-meson-build-target-provider.c        | 26 ++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)
---
diff --git a/src/plugins/meson/gbp-meson-build-target-provider.c 
b/src/plugins/meson/gbp-meson-build-target-provider.c
index 64b115ac4..3dac44cbb 100644
--- a/src/plugins/meson/gbp-meson-build-target-provider.c
+++ b/src/plugins/meson/gbp-meson-build-target-provider.c
@@ -64,6 +64,26 @@ create_launcher (IdeContext  *context,
   return g_steal_pointer (&ret);
 }
 
+static const gchar *
+get_first_string (JsonNode *member)
+{
+  if (JSON_NODE_HOLDS_VALUE (member))
+    return json_node_get_string (member);
+
+  if (JSON_NODE_HOLDS_ARRAY (member))
+    {
+      JsonArray *ar = json_node_get_array (member);
+
+      if (json_array_get_length (ar) > 0)
+        {
+          JsonNode *ele = json_array_get_element (ar, 0);
+          return get_first_string (ele);
+        }
+    }
+
+  return NULL;
+}
+
 static void
 gbp_meson_build_target_provider_communicate_cb2 (GObject      *object,
                                                  GAsyncResult *result,
@@ -236,11 +256,9 @@ gbp_meson_build_target_provider_communicate_cb (GObject      *object,
           JSON_NODE_HOLDS_VALUE (member) &&
           NULL != (name = json_node_get_string (member)) &&
           NULL != (member = json_object_get_member (obj, "install_filename")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          NULL != (install_filename = json_node_get_string (member)) &&
+          NULL != (install_filename = get_first_string (member)) &&
           NULL != (member = json_object_get_member (obj, "filename")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          NULL != (filename = json_node_get_string (member)) &&
+          NULL != (filename = get_first_string (member)) &&
           NULL != (member = json_object_get_member (obj, "type")) &&
           JSON_NODE_HOLDS_VALUE (member) &&
           NULL != (type = json_node_get_string (member)) &&


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]