diff options
Diffstat (limited to 'libnm-core/nm-setting-user.c')
| -rw-r--r-- | libnm-core/nm-setting-user.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/libnm-core/nm-setting-user.c b/libnm-core/nm-setting-user.c index ccc030aa..049607e1 100644 --- a/libnm-core/nm-setting-user.c +++ b/libnm-core/nm-setting-user.c @@ -210,7 +210,7 @@ nm_setting_user_check_val (const char *val, GError **error) static GHashTable * _create_data_hash (void) { - return g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, g_free); + return g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); } /** @@ -226,6 +226,7 @@ nm_setting_user_get_keys (NMSettingUser *setting, guint *out_len) { NMSettingUser *self = setting; NMSettingUserPrivate *priv; + guint len; g_return_val_if_fail (NM_IS_SETTING_USER (self), NULL); @@ -236,13 +237,19 @@ nm_setting_user_get_keys (NMSettingUser *setting, guint *out_len) return priv->keys; } - priv->keys = nm_utils_strdict_get_keys (priv->data, - TRUE, - out_len); + if (!priv->data || !g_hash_table_size (priv->data)) { + NM_SET_OUT (out_len, 0); + return (const char **) &priv->keys; + } - /* don't return %NULL, but hijack the @keys fields as a pseudo - * empty strv array. */ - return priv->keys ?: ((const char **) &priv->keys); + priv->keys = (const char **) g_hash_table_get_keys_as_array (priv->data, &len); + g_qsort_with_data (priv->keys, + len, + sizeof (const char *), + nm_strcmp_p_with_data, + NULL); + NM_SET_OUT (out_len, len); + return priv->keys; } /*****************************************************************************/ @@ -580,12 +587,14 @@ nm_setting_user_class_init (NMSettingUserClass *klass) setting_class->verify = verify; /** - * NMSettingUser:data: (type GHashTable(utf8,utf8)) + * NMSettingUser:data: * * A dictionary of key/value pairs with user data. This data is ignored by NetworkManager * and can be used at the users discretion. The keys only support a strict ascii format, * but the values can be arbitrary UTF8 strings up to a certain length. * + * Type: GHashTable(utf8,utf8) + * * Since: 1.8 **/ /* ---ifcfg-rh--- |