From 86b54a65e63cdcee8d518f3198cbafce9f8ad7b3 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sat, 21 Apr 2018 13:04:39 +0200 Subject: [PATCH] core: add nm_utils_strdict_to_variant() helper --- src/nm-core-utils.c | 26 ++++++++++++++++++++++++++ src/nm-core-utils.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index b97be0b831..0d9d834176 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -4171,6 +4171,32 @@ nm_utils_parse_dns_domain (const char *domain, gboolean *is_routing) return domain; } + +/*****************************************************************************/ + +GVariant * +nm_utils_strdict_to_variant (GHashTable *options) +{ + GVariantBuilder builder; + gs_free const char **keys = NULL; + guint i; + guint nkeys = 0; + + if (options) { + keys = (const char **) g_hash_table_get_keys_as_array (options, &nkeys); + nm_utils_strv_sort (keys, nkeys); + } + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + for (i = 0; i < nkeys; i++) { + g_variant_builder_add (&builder, + "{sv}", + keys[i], + g_variant_new_string (g_hash_table_lookup (options, keys[i]))); + } + return g_variant_builder_end (&builder); +} + /*****************************************************************************/ NM_UTILS_ENUM2STR_DEFINE (nm_icmpv6_router_pref_to_string, NMIcmpv6RouterPref, diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h index ec9e294772..488eb827d2 100644 --- a/src/nm-core-utils.h +++ b/src/nm-core-utils.h @@ -432,6 +432,8 @@ gboolean nm_utils_validate_plugin (const char *path, struct stat *stat, GError * char **nm_utils_read_plugin_paths (const char *dirname, const char *prefix); char *nm_utils_format_con_diff_for_audit (GHashTable *diff); +GVariant *nm_utils_strdict_to_variant (GHashTable *options); + /*****************************************************************************/ /* this enum is compatible with ICMPV6_ROUTER_PREF_* (from ,