From: Kevin McCarthy Date: Sun, 29 Jan 2017 02:47:48 +0000 (-0800) Subject: Add hash_find_elem to get the hash element. X-Git-Tag: mutt-1-8-rel~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f538c3ca16b2ba9682c6c9799120d379ea4afd68;p=mutt Add hash_find_elem to get the hash element. This will be used in the following patch for directly manipulating the label counter. --- diff --git a/hash.c b/hash.c index d87a3218..40afd0b1 100644 --- a/hash.c +++ b/hash.c @@ -172,7 +172,7 @@ int int_hash_insert (HASH * table, unsigned int intkey, void *data, int allow_du return union_hash_insert (table, key, data, allow_dup); } -static void *union_hash_find (const HASH *table, union hash_key key) +static struct hash_elem *union_hash_find_elem (const HASH *table, union hash_key key) { int hash; struct hash_elem *ptr; @@ -185,11 +185,20 @@ static void *union_hash_find (const HASH *table, union hash_key key) for (; ptr; ptr = ptr->next) { if (table->cmp_key (key, ptr->key) == 0) - return (ptr->data); + return (ptr); } return NULL; } +static void *union_hash_find (const HASH *table, union hash_key key) +{ + struct hash_elem *ptr = union_hash_find_elem (table, key); + if (ptr) + return ptr->data; + else + return NULL; +} + void *hash_find (const HASH *table, const char *strkey) { union hash_key key; @@ -197,6 +206,13 @@ void *hash_find (const HASH *table, const char *strkey) return union_hash_find (table, key); } +struct hash_elem *hash_find_elem (const HASH *table, const char *strkey) +{ + union hash_key key; + key.strkey = strkey; + return union_hash_find_elem (table, key); +} + void *int_hash_find (const HASH *table, unsigned int intkey) { union hash_key key; diff --git a/hash.h b/hash.h index ce2a5d69..1b6c731e 100644 --- a/hash.h +++ b/hash.h @@ -53,6 +53,7 @@ int hash_insert (HASH * table, const char *key, void *data, int allow_dup); int int_hash_insert (HASH *table, unsigned int key, void *data, int allow_dup); void *hash_find (const HASH *table, const char *key); +struct hash_elem *hash_find_elem (const HASH *table, const char *strkey); void *int_hash_find (const HASH *table, unsigned int key); struct hash_elem *hash_find_bucket (const HASH *table, const char *key);