From e4fcdcf61e5a08c8d29ce7c003108a958806cdac Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Wed, 18 Nov 2020 12:32:34 +0000
Subject: [PATCH] json-utils: Factor out a function to serialize a GError as
 JSON

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 bin/system-info.c                         | 24 +++--------------------
 steam-runtime-tools/json-utils-internal.h |  3 +++
 steam-runtime-tools/json-utils.c          | 16 +++++++++++++++
 3 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/bin/system-info.c b/bin/system-info.c
index 529f21de5..0a4e8510f 100644
--- a/bin/system-info.c
+++ b/bin/system-info.c
@@ -1166,13 +1166,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
         }
 
       json_builder_end_object (builder);
@@ -1216,13 +1210,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
           g_clear_error (&error);
         }
 
@@ -1270,13 +1258,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
           g_clear_error (&error);
         }
 
diff --git a/steam-runtime-tools/json-utils-internal.h b/steam-runtime-tools/json-utils-internal.h
index a62f42fd0..f01ddf524 100644
--- a/steam-runtime-tools/json-utils-internal.h
+++ b/steam-runtime-tools/json-utils-internal.h
@@ -51,3 +51,6 @@ void _srt_json_builder_add_strv_value (JsonBuilder *builder,
                                        const gchar *array_name,
                                        const gchar * const *values,
                                        gboolean allow_empty_array);
+
+void _srt_json_builder_add_error_members (JsonBuilder *builder,
+                                          const GError *error);
diff --git a/steam-runtime-tools/json-utils.c b/steam-runtime-tools/json-utils.c
index 26bae1d13..e4f42687d 100644
--- a/steam-runtime-tools/json-utils.c
+++ b/steam-runtime-tools/json-utils.c
@@ -225,3 +225,19 @@ _srt_json_builder_add_strv_value (JsonBuilder *builder,
       json_builder_end_array (builder);
     }
 }
+
+void
+_srt_json_builder_add_error_members (JsonBuilder *builder,
+                                     const GError *error)
+{
+  g_return_if_fail (builder != NULL);
+  g_return_if_fail (error != NULL);
+
+  json_builder_set_member_name (builder, "error-domain");
+  json_builder_add_string_value (builder,
+                                 g_quark_to_string (error->domain));
+  json_builder_set_member_name (builder, "error-code");
+  json_builder_add_int_value (builder, error->code);
+  json_builder_set_member_name (builder, "error");
+  json_builder_add_string_value (builder, error->message);
+}
-- 
GitLab