Skip to content
Snippets Groups Projects
Commit 2c3e674f authored by Ludovico de Nittis's avatar Ludovico de Nittis :palm_tree:
Browse files

Add a new _srt_json_builder_add_strv_value function


This function allow us to avoid some repetitive codes when constructing
a new JSON file.

Signed-off-by: default avatarLudovico de Nittis <ludovico.denittis@collabora.com>
parent 50b740ed
No related branches found
No related tags found
No related merge requests found
Pipeline #5192 passed
...@@ -127,6 +127,7 @@ ...@@ -127,6 +127,7 @@
#include <json-glib/json-glib.h> #include <json-glib/json-glib.h>
#include <steam-runtime-tools/json-utils-internal.h>
#include <steam-runtime-tools/utils-internal.h> #include <steam-runtime-tools/utils-internal.h>
enum enum
...@@ -401,24 +402,10 @@ print_libraries_details (JsonBuilder *builder, ...@@ -401,24 +402,10 @@ print_libraries_details (JsonBuilder *builder,
} }
missing_symbols = srt_library_get_missing_symbols (l->data); missing_symbols = srt_library_get_missing_symbols (l->data);
if (missing_symbols[0] != NULL) _srt_json_builder_add_strv_value (builder, "missing-symbols", missing_symbols, FALSE);
{
json_builder_set_member_name (builder, "missing-symbols");
json_builder_begin_array (builder);
for (gsize i = 0; missing_symbols[i] != NULL; i++)
json_builder_add_string_value (builder, missing_symbols[i]);
json_builder_end_array (builder);
}
misversioned_symbols = srt_library_get_misversioned_symbols (l->data); misversioned_symbols = srt_library_get_misversioned_symbols (l->data);
if (misversioned_symbols[0] != NULL) _srt_json_builder_add_strv_value (builder, "misversioned-symbols", misversioned_symbols, FALSE);
{
json_builder_set_member_name (builder, "misversioned-symbols");
json_builder_begin_array (builder);
for (gsize i = 0; misversioned_symbols[i] != NULL; i++)
json_builder_add_string_value (builder, misversioned_symbols[i]);
json_builder_end_array (builder);
}
json_builder_end_object (builder); json_builder_end_object (builder);
} }
...@@ -614,8 +601,7 @@ jsonify_os_release (JsonBuilder *builder, ...@@ -614,8 +601,7 @@ jsonify_os_release (JsonBuilder *builder,
json_builder_set_member_name (builder, "os-release"); json_builder_set_member_name (builder, "os-release");
json_builder_begin_object (builder); json_builder_begin_object (builder);
{ {
GStrv strv; g_auto(GStrv) strv = NULL;
gsize i;
gchar *tmp; gchar *tmp;
tmp = srt_system_info_dup_os_id (info); tmp = srt_system_info_dup_os_id (info);
...@@ -629,17 +615,8 @@ jsonify_os_release (JsonBuilder *builder, ...@@ -629,17 +615,8 @@ jsonify_os_release (JsonBuilder *builder,
strv = srt_system_info_dup_os_id_like (info, FALSE); strv = srt_system_info_dup_os_id_like (info, FALSE);
if (strv != NULL) _srt_json_builder_add_strv_value (builder, "id_like", (const gchar * const *)strv,
{ FALSE);
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); tmp = srt_system_info_dup_os_name (info);
...@@ -793,6 +770,7 @@ main (int argc, ...@@ -793,6 +770,7 @@ main (int argc,
SrtX86FeatureFlags known_x86_features = SRT_X86_FEATURE_NONE; SrtX86FeatureFlags known_x86_features = SRT_X86_FEATURE_NONE;
g_autoptr(SrtObjectList) portal_backends = NULL; g_autoptr(SrtObjectList) portal_backends = NULL;
g_autoptr(SrtObjectList) portal_interfaces = NULL; g_autoptr(SrtObjectList) portal_interfaces = NULL;
g_auto(GStrv) driver_environment = NULL;
char *expectations = NULL; char *expectations = NULL;
gboolean verbose = FALSE; gboolean verbose = FALSE;
JsonBuilder *builder; JsonBuilder *builder;
...@@ -946,22 +924,15 @@ main (int argc, ...@@ -946,22 +924,15 @@ main (int argc,
json_builder_set_member_name (builder, "overrides"); json_builder_set_member_name (builder, "overrides");
json_builder_begin_object (builder); json_builder_begin_object (builder);
if (overrides != NULL && overrides[0] != NULL)
{ _srt_json_builder_add_strv_value (builder, "list",
json_builder_set_member_name (builder, "list"); (const gchar * const *)overrides,
json_builder_begin_array (builder); FALSE);
for (gsize i = 0; overrides[i] != NULL; i++)
json_builder_add_string_value (builder, overrides[i]); _srt_json_builder_add_strv_value (builder, "messages",
json_builder_end_array (builder); (const gchar * const *)messages,
} FALSE);
if (messages != NULL && messages[0] != NULL)
{
json_builder_set_member_name (builder, "messages");
json_builder_begin_array (builder);
for (gsize i = 0; messages[i] != NULL; i++)
json_builder_add_string_value (builder, messages[i]);
json_builder_end_array (builder);
}
json_builder_end_object (builder); json_builder_end_object (builder);
g_strfreev (overrides); g_strfreev (overrides);
...@@ -974,22 +945,15 @@ main (int argc, ...@@ -974,22 +945,15 @@ main (int argc,
json_builder_set_member_name (builder, "pinned_libs_32"); json_builder_set_member_name (builder, "pinned_libs_32");
json_builder_begin_object (builder); json_builder_begin_object (builder);
if (values != NULL && values[0] != NULL)
{ _srt_json_builder_add_strv_value (builder, "list",
json_builder_set_member_name (builder, "list"); (const gchar * const *)values,
json_builder_begin_array (builder); FALSE);
for (gsize i = 0; values[i] != NULL; i++)
json_builder_add_string_value (builder, values[i]); _srt_json_builder_add_strv_value (builder, "messages",
json_builder_end_array (builder); (const gchar * const *)messages,
} FALSE);
if (messages != NULL && messages[0] != NULL)
{
json_builder_set_member_name (builder, "messages");
json_builder_begin_array (builder);
for (gsize i = 0; messages[i] != NULL; i++)
json_builder_add_string_value (builder, messages[i]);
json_builder_end_array (builder);
}
json_builder_end_object (builder); json_builder_end_object (builder);
g_strfreev (values); g_strfreev (values);
...@@ -998,22 +962,15 @@ main (int argc, ...@@ -998,22 +962,15 @@ main (int argc,
json_builder_set_member_name (builder, "pinned_libs_64"); json_builder_set_member_name (builder, "pinned_libs_64");
json_builder_begin_object (builder); json_builder_begin_object (builder);
if (values != NULL && values[0] != NULL)
{ _srt_json_builder_add_strv_value (builder, "list",
json_builder_set_member_name (builder, "list"); (const gchar * const *)values,
json_builder_begin_array (builder); FALSE);
for (gsize i = 0; values[i] != NULL; i++)
json_builder_add_string_value (builder, values[i]); _srt_json_builder_add_strv_value (builder, "messages",
json_builder_end_array (builder); (const gchar * const *)messages,
} FALSE);
if (messages != NULL && messages[0] != NULL)
{
json_builder_set_member_name (builder, "messages");
json_builder_begin_array (builder);
for (gsize i = 0; messages[i] != NULL; i++)
json_builder_add_string_value (builder, messages[i]);
json_builder_end_array (builder);
}
json_builder_end_object (builder); json_builder_end_object (builder);
g_strfreev (values); g_strfreev (values);
...@@ -1025,19 +982,10 @@ main (int argc, ...@@ -1025,19 +982,10 @@ main (int argc,
jsonify_os_release (builder, info); jsonify_os_release (builder, info);
jsonify_container (builder, info); jsonify_container (builder, info);
json_builder_set_member_name (builder, "driver_environment"); driver_environment = srt_system_info_list_driver_environment (info);
json_builder_begin_array (builder); _srt_json_builder_add_strv_value (builder, "driver_environment",
{ (const gchar * const *)driver_environment,
GStrv strv = srt_system_info_list_driver_environment (info); TRUE);
if (strv != NULL)
{
for (gsize i = 0; strv[i] != NULL; i++)
json_builder_add_string_value (builder, strv[i]);
g_strfreev (strv);
}
}
json_builder_end_array (builder);
json_builder_set_member_name (builder, "architectures"); json_builder_set_member_name (builder, "architectures");
json_builder_begin_object (builder); json_builder_begin_object (builder);
......
...@@ -46,3 +46,8 @@ gchar ** _srt_json_object_dup_strv_member (JsonObject *json_obj, ...@@ -46,3 +46,8 @@ gchar ** _srt_json_object_dup_strv_member (JsonObject *json_obj,
gchar *_srt_json_object_dup_array_of_lines_member (JsonObject *json_obj, gchar *_srt_json_object_dup_array_of_lines_member (JsonObject *json_obj,
const gchar *array_member); const gchar *array_member);
void _srt_json_builder_add_strv_value (JsonBuilder *builder,
const gchar *array_name,
const gchar * const *values,
gboolean allow_empty_array);
...@@ -192,3 +192,36 @@ _srt_json_object_dup_array_of_lines_member (JsonObject *json_obj, ...@@ -192,3 +192,36 @@ _srt_json_object_dup_array_of_lines_member (JsonObject *json_obj,
return g_string_free (g_steal_pointer (&ret), FALSE); return g_string_free (g_steal_pointer (&ret), FALSE);
} }
/**
* _srt_json_builder_add_strv_value:
* @builder: (not nullable): A JSON Builder where the provided @values
* will be appended
* @array_name: (not nullable): The array member name to use
* @values: (nullable): Array of strings to be added in the JSON Builder
* @allow_empty_array: If %TRUE, a new array in JSON Builder will be always
* created, even if @values is %NULL or without any elements. Otherwise the
* new array will be created only if there is at least a non-NULL element in
* @values
*/
void
_srt_json_builder_add_strv_value (JsonBuilder *builder,
const gchar *array_name,
const gchar * const *values,
gboolean allow_empty_array)
{
gsize i;
g_return_if_fail (builder != NULL);
g_return_if_fail (array_name != NULL);
if ((values != NULL && values[0] != NULL) ||
allow_empty_array)
{
json_builder_set_member_name (builder, array_name);
json_builder_begin_array (builder);
for (i = 0; values != NULL && values[i] != NULL; i++)
json_builder_add_string_value (builder, values[i]);
json_builder_end_array (builder);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment