summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-04-05 10:21:56 +0200
committerThomas Haller <thaller@redhat.com>2018-04-06 11:51:21 +0200
commit2cda3770a3503c340a2c6e9fc6b86b3d0ba72b54 (patch)
tree9c2b9af0a0cafb702087fb3139df65171c2d65c8
parent67828918c93927ec5faa3fc3310b700773281c07 (diff)
downloadNetworkManager-2cda3770a3503c340a2c6e9fc6b86b3d0ba72b54.tar.gz
shared: add nm_pstr_hash() and nm_pstr_equal()
-rw-r--r--shared/nm-utils/nm-hash-utils.c24
-rw-r--r--shared/nm-utils/nm-hash-utils.h11
2 files changed, 35 insertions, 0 deletions
diff --git a/shared/nm-utils/nm-hash-utils.c b/shared/nm-utils/nm-hash-utils.c
index b096be692c..8d8c21ce55 100644
--- a/shared/nm-utils/nm-hash-utils.c
+++ b/shared/nm-utils/nm-hash-utils.c
@@ -159,3 +159,27 @@ nm_direct_hash (gconstpointer ptr)
{
return nm_hash_ptr (ptr);
}
+
+/*****************************************************************************/
+
+guint
+nm_pstr_hash (gconstpointer p)
+{
+ const char *const*s = p;
+
+ if (!s)
+ return nm_hash_static (101061439u);
+ return nm_hash_str (*s);
+}
+
+gboolean
+nm_pstr_equal (gconstpointer a, gconstpointer b)
+{
+ const char *const*s1 = a;
+ const char *const*s2 = b;
+
+ return (s1 == s2)
+ || ( s1
+ && s2
+ && nm_streq0 (*s1, *s2));
+}
diff --git a/shared/nm-utils/nm-hash-utils.h b/shared/nm-utils/nm-hash-utils.h
index 21396f2814..3bd3f652fb 100644
--- a/shared/nm-utils/nm-hash-utils.h
+++ b/shared/nm-utils/nm-hash-utils.h
@@ -209,4 +209,15 @@ guint nm_direct_hash (gconstpointer str);
guint nm_hash_str (const char *str);
guint nm_str_hash (gconstpointer str);
+/*****************************************************************************/
+
+/* nm_pstr_*() are for hashing keys that are pointers to strings,
+ * that is, "const char *const*" types, using strcmp(). */
+
+guint nm_pstr_hash (gconstpointer p);
+
+gboolean nm_pstr_equal (gconstpointer a, gconstpointer b);
+
+/*****************************************************************************/
+
#endif /* __NM_HASH_UTILS_H__ */