1 grab some updates from FreeBSD
3 http://bugs.gentoo.org/201979
5 diff -durN glibc-2.10.1.orig/misc/sys/queue.h glibc-2.10.1/misc/sys/queue.h
7 diff -durN glibc-2.10.1.orig/misc/sys/queue.h glibc-2.10.1/misc/sys/queue.h
8 --- glibc-2.10.1.orig/misc/sys/queue.h 2008-03-05 06:50:30.000000000 +0100
9 +++ glibc-2.10.1/misc/sys/queue.h 2009-11-13 00:49:51.000000000 +0100
12 (var) = ((var)->field.le_next))
14 +#define LIST_FOREACH_SAFE(var, head, field, tvar) \
15 + for ((var) = LIST_FIRST((head)); \
16 + (var) && ((tvar) = LIST_NEXT((var), field), 1); \
20 * List access methods.
23 #define SLIST_FOREACH(var, head, field) \
24 for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
26 +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
27 + for ((var) = SLIST_FIRST((head)); \
28 + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
31 +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
32 + for ((varp) = &SLIST_FIRST((head)); \
33 + ((var) = *(varp)) != NULL; \
34 + (varp) = &SLIST_NEXT((var), field))
37 * Singly-linked List access methods.
40 (head)->stqh_last = &(elm)->field.stqe_next; \
41 } while (/*CONSTCOND*/0)
43 +#define STAILQ_LAST(head, type, field) \
44 + (STAILQ_EMPTY((head)) ? \
46 + ((struct type *)(void *) \
47 + ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
49 #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
50 if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
51 (head)->stqh_last = &(elm)->field.stqe_next; \
54 (var) = ((var)->field.stqe_next))
56 +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
57 + for ((var) = STAILQ_FIRST((head)); \
58 + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
61 #define STAILQ_CONCAT(head1, head2) do { \
62 if (!STAILQ_EMPTY((head2))) { \
63 *(head1)->stqh_last = (head2)->stqh_first; \
66 (var) = ((var)->field.tqe_next))
68 +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
69 + for ((var) = TAILQ_FIRST((head)); \
70 + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
73 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
74 for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
76 (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
78 +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
79 + for ((var) = TAILQ_LAST((head), headname); \
80 + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
83 #define TAILQ_CONCAT(head1, head2, field) do { \
84 if (!TAILQ_EMPTY(head2)) { \
85 *(head1)->tqh_last = (head2)->tqh_first; \