*
* Loop var through each member of list
*/
+#ifdef HAVE_GCC
#define foreach_dlist(var, list) \
- for((var)=NULL; (*((void **)&(var))=(void*)((list)->next(var))); )
-
-#ifdef the_old_way
+ for((var)=NULL; ((var)=(typeof(var))(list)->next(var)); )
+#else
#define foreach_dlist(var, list) \
- for((var)=NULL; (((void *)(var))=(list)->next(var)); )
+ for((var)=NULL; (*((void **)&(var))=(void*)((list)->next(var))); )
#endif
+
struct dlink {
void *next;
void *prev;