diff options
author | Thomas Haller <thaller@redhat.com> | 2018-04-05 10:21:56 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-04-06 11:51:21 +0200 |
commit | 2cda3770a3503c340a2c6e9fc6b86b3d0ba72b54 (patch) | |
tree | 9c2b9af0a0cafb702087fb3139df65171c2d65c8 | |
parent | 67828918c93927ec5faa3fc3310b700773281c07 (diff) | |
download | NetworkManager-2cda3770a3503c340a2c6e9fc6b86b3d0ba72b54.tar.gz |
shared: add nm_pstr_hash() and nm_pstr_equal()
-rw-r--r-- | shared/nm-utils/nm-hash-utils.c | 24 | ||||
-rw-r--r-- | shared/nm-utils/nm-hash-utils.h | 11 |
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__ */ |