2004-09-01  Ognyan Kulev  <ogi@fmi.uni-sofia.bg>

	* ihash.h (HURD_IHASH_ITERATE_KEYS): New macro.


--- ihash.h.~1.8.~	2004-04-22 00:34:16.000000000 +0300
+++ ihash.h	2004-09-01 10:04:57.000000000 +0300
@@ -218,6 +218,13 @@ hurd_ihash_value_t hurd_ihash_find (hurd
 	 (((_hurd_ihash_item_t) _hurd_ihash_valuep) + 1))		\
     if (val != _HURD_IHASH_EMPTY && val != _HURD_IHASH_DELETED)
 
+/* Same as HURD_IHASH_ITERATE, but provides the key too.  */
+#define HURD_IHASH_ITERATE_KEYS(ht, key, val)				\
+  HURD_IHASH_ITERATE (ht, val)						\
+    for (hurd_ihash_key_t first_loop = 1,				\
+           key = ((_hurd_ihash_item_t) _hurd_ihash_valuep)->key;	\
+         first_loop; first_loop = 0)
+
 /* Remove the entry with the key KEY from the hash table HT.  If such
    an entry was found and removed, 1 is returned, otherwise 0.  */
 int hurd_ihash_remove (hurd_ihash_t ht, hurd_ihash_key_t key);
