we're grownups now. don't care about stupid OS'es that don't know what an
[apps/madmutt.git] / hash.c
diff --git a/hash.c b/hash.c
index cb2cf2e..0e2192b 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -77,7 +77,7 @@ HASH *hash_resize (HASH * ptr, int nelem)
  * data         data to associate with `key'
  * allow_dup    if nonzero, duplicate keys are allowed in the table 
  */
-int hash_insert (HASH * table, const char *key, void *data, int allow_dup)
+int hash_insert (HASH * table, const char *key, const void *data, int allow_dup)
 {
   struct hash_elem *ptr;
   int h;
@@ -168,3 +168,17 @@ void hash_destroy (HASH ** ptr, void (*destroy) (void *))
   mem_free (&pptr->table);
   mem_free (ptr);
 }
+
+void hash_map (HASH* table, void (*mapfunc) (const char* key, void* data,
+                                             unsigned long more),
+               unsigned long more) {
+  int i = 0;
+  struct hash_elem* elem = NULL;
+
+  if (!table || !mapfunc)
+    return;
+
+  for (i = 0; i < table->nelem; i++)
+    for (elem = table->table[i]; elem; elem = elem->next)
+      mapfunc (elem->key, elem->data, more);
+}