about summary refs log tree commit diff
path: root/libnm-core/nm-setting-user.c
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2018-08-24 11:00:09 +0200
committerSebastien Bacher <seb128@ubuntu.com>2018-08-24 11:06:47 +0200
commitb7db94545968c37886b7111d8c85f62eb063fbb4 (patch)
tree7c2aedd497b1fdcb26bf9d49f98cc63a530baf2e /libnm-core/nm-setting-user.c
parent9d5cdc3adde9e7e57bf5a0e754e563b6a9e8e513 (diff)
parentcaf1db9d6fbc056cc6c76a24574890f6c7895f3d (diff)
Import Debian changes 1.12.2-0ubuntu3
network-manager (1.12.2-0ubuntu3) cosmic; urgency=medium

  * debian/rules:
    - use --with-libnm-glib, the default reversed since that's a legacy
      library but we still need it for unity-control-center

network-manager (1.12.2-0ubuntu2) cosmic; urgency=medium

  * debian/patches/git-newglib-test.patch:
    - backport upstream commit to fix the tests with the new glib 

network-manager (1.12.2-0ubuntu1) cosmic; urgency=medium

  * New upstream version
  * d/p/libnm-register-empty-NMClient-and-NetworkManager-when-loa.patch,
    d/p/e91f1a7d2a6b8400b6b331d5b72287dcb5164a39.patch,
    d/p/git_thunderbolt_connect.patch:
    - removed, those changes are in the new version
  * Backport Debian changes
  * Update symbols file for libnm0
  * Enable iwd support
  * Drop version requirements when oldstable ships a newer version
  * Drop dh_strip override, the dbgsym migration is done
  * Rebase patches
  * Make sure the example server.conf is actually installed
  * Update install path for plugins, it now includes a version number
  * Drop libnl3 build dependency.
    Upstream has copied the code directly from libnl3 for the few functions it
    needs with a few small modifications.
  * Drop libiw build dependency.
    Hasn't been needed for a long time and was simply a left over from older
    releases.
  * Bump Standards-Version to 4.1.5
  * Fix compile error due to NM_AVAILABLE_IN_1_12_2 macro (Closes: #905372)
Diffstat (limited to 'libnm-core/nm-setting-user.c')
-rw-r--r--libnm-core/nm-setting-user.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/libnm-core/nm-setting-user.c b/libnm-core/nm-setting-user.c
index 049607e1..ccc030aa 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 (g_str_hash, g_str_equal, g_free, g_free);
+	return g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, g_free);
 }
 
 /**
@@ -226,7 +226,6 @@ 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);
 
@@ -237,19 +236,13 @@ nm_setting_user_get_keys (NMSettingUser *setting, guint *out_len)
 		return priv->keys;
 	}
 
-	if (!priv->data || !g_hash_table_size (priv->data)) {
-		NM_SET_OUT (out_len, 0);
-		return (const char **) &priv->keys;
-	}
+	priv->keys = nm_utils_strdict_get_keys (priv->data,
+	                                        TRUE,
+	                                        out_len);
 
-	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;
+	/* don't return %NULL, but hijack the @keys fields as a pseudo
+	 * empty strv array. */
+	return priv->keys ?: ((const char **) &priv->keys);
 }
 
 /*****************************************************************************/
@@ -587,14 +580,12 @@ nm_setting_user_class_init (NMSettingUserClass *klass)
 	setting_class->verify = verify;
 
 	/**
-	 * NMSettingUser:data:
+	 * NMSettingUser:data: (type GHashTable(utf8,utf8))
 	 *
 	 * 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---