From 7e3b1ef650970fb79f0a1e9a549583c5fad540fd Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Wed, 4 Mar 2020 17:14:18 +0000
Subject: [PATCH] bin: Factor out jsonify_os_release

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 bin/system-info.c | 195 ++++++++++++++++++++++++----------------------
 1 file changed, 101 insertions(+), 94 deletions(-)

diff --git a/bin/system-info.c b/bin/system-info.c
index 7192ab25c..bd5ac00c4 100644
--- a/bin/system-info.c
+++ b/bin/system-info.c
@@ -532,6 +532,106 @@ print_vdpau_details (JsonBuilder *builder,
   json_builder_end_array (builder); // End vdpau_drivers
 }
 
+static void
+jsonify_os_release (JsonBuilder *builder,
+                    SrtSystemInfo *info)
+{
+  json_builder_set_member_name (builder, "os-release");
+  json_builder_begin_object (builder);
+    {
+      GStrv strv;
+      gsize i;
+      gchar *tmp;
+
+      tmp = srt_system_info_dup_os_id (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "id");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      strv = srt_system_info_dup_os_id_like (info, FALSE);
+
+      if (strv != NULL)
+        {
+          json_builder_set_member_name (builder, "id_like");
+          json_builder_begin_array (builder);
+            {
+              for (i = 0; strv[i] != NULL; i++)
+                json_builder_add_string_value (builder, strv[i]);
+            }
+          json_builder_end_array (builder);
+          g_strfreev (strv);
+        }
+
+      tmp = srt_system_info_dup_os_name (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "name");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_pretty_name (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "pretty_name");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_version_id (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "version_id");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_version_codename (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "version_codename");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_build_id (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "build_id");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_variant_id (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "variant_id");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+
+      tmp = srt_system_info_dup_os_variant (info);
+
+      if (tmp != NULL)
+        {
+          json_builder_set_member_name (builder, "variant");
+          json_builder_add_string_value (builder, tmp);
+          g_free (tmp);
+        }
+    }
+  json_builder_end_object (builder);
+}
+
 static const char * const locales[] =
 {
   "",
@@ -743,100 +843,7 @@ main (int argc,
     }
   json_builder_end_object (builder);
 
-  json_builder_set_member_name (builder, "os-release");
-  json_builder_begin_object (builder);
-    {
-      GStrv strv;
-      gsize i;
-      gchar *tmp;
-
-      tmp = srt_system_info_dup_os_id (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "id");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      strv = srt_system_info_dup_os_id_like (info, FALSE);
-
-      if (strv != NULL)
-        {
-          json_builder_set_member_name (builder, "id_like");
-          json_builder_begin_array (builder);
-            {
-              for (i = 0; strv[i] != NULL; i++)
-                json_builder_add_string_value (builder, strv[i]);
-            }
-          json_builder_end_array (builder);
-          g_strfreev (strv);
-        }
-
-      tmp = srt_system_info_dup_os_name (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "name");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_pretty_name (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "pretty_name");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_version_id (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "version_id");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_version_codename (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "version_codename");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_build_id (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "build_id");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_variant_id (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "variant_id");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-
-      tmp = srt_system_info_dup_os_variant (info);
-
-      if (tmp != NULL)
-        {
-          json_builder_set_member_name (builder, "variant");
-          json_builder_add_string_value (builder, tmp);
-          g_free (tmp);
-        }
-    }
-  json_builder_end_object (builder);
+  jsonify_os_release (builder, info);
 
   json_builder_set_member_name (builder, "driver_environment");
   json_builder_begin_array (builder);
-- 
GitLab