summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-06-23 17:53:52 +0200
committerThomas Haller <thaller@redhat.com>2019-06-26 09:53:54 +0200
commitec707f56c1ea951b808a90a595019de021b092d9 (patch)
tree96cae12988e5940b5eadc9a49be81d725c0a867d /shared
parentfcaf7994f2011b38487c472b6ebfee78bf1a8140 (diff)
downloadNetworkManager-ec707f56c1ea951b808a90a595019de021b092d9.tar.gz
shared: add nm_utils_hashtable_same_keys() util
Diffstat (limited to 'shared')
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.c29
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h3
2 files changed, 32 insertions, 0 deletions
diff --git a/shared/nm-glib-aux/nm-shared-utils.c b/shared/nm-glib-aux/nm-shared-utils.c
index 49037ed7b4..472a4c484f 100644
--- a/shared/nm-glib-aux/nm-shared-utils.c
+++ b/shared/nm-glib-aux/nm-shared-utils.c
@@ -2282,6 +2282,35 @@ nm_utils_hash_keys_to_array (GHashTable *hash,
return keys;
}
+gboolean
+nm_utils_hashtable_same_keys (const GHashTable *a,
+ const GHashTable *b)
+{
+ GHashTableIter h;
+ const char *k;
+
+ if (a == b)
+ return TRUE;
+ if (!a || !b)
+ return FALSE;
+ if (g_hash_table_size ((GHashTable *) a) != g_hash_table_size ((GHashTable *) b))
+ return FALSE;
+
+ g_hash_table_iter_init (&h, (GHashTable *) a);
+ while (g_hash_table_iter_next (&h, (gpointer) &k, NULL)) {
+ if (!g_hash_table_contains ((GHashTable *) b, k))
+ return FALSE;
+ }
+
+#if NM_MORE_ASSERTS > 5
+ g_hash_table_iter_init (&h, (GHashTable *) b);
+ while (g_hash_table_iter_next (&h, (gpointer) &k, NULL))
+ nm_assert (g_hash_table_contains ((GHashTable *) a, k));
+#endif
+
+ return TRUE;
+}
+
char **
nm_utils_strv_make_deep_copied (const char **strv)
{
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h
index a8f2966b38..e65d1be683 100644
--- a/shared/nm-glib-aux/nm-shared-utils.h
+++ b/shared/nm-glib-aux/nm-shared-utils.h
@@ -966,6 +966,9 @@ nm_utils_strdict_get_keys (const GHashTable *hash,
out_length);
}
+gboolean nm_utils_hashtable_same_keys (const GHashTable *a,
+ const GHashTable *b);
+
char **nm_utils_strv_make_deep_copied (const char **strv);
char **nm_utils_strv_make_deep_copied_n (const char **strv, gsize len);