patches/glibc/ports-2.10.1/150-queue-header-updates.patch
author "Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
Sun Oct 31 20:17:30 2010 +0100 (2010-10-31)
changeset 2169 8b470eaf3d85
parent 1625 fde082da9813
permissions -rw-r--r--
libc/glibc: fix glibc-2.10.1 patchset

There was a missing '#" to a '#define' line.
yann@1625
     1
grab some updates from FreeBSD
yann@1625
     2
yann@1625
     3
http://bugs.gentoo.org/201979
yann@1625
     4
yann@1625
     5
diff -durN glibc-2.10.1.orig/misc/sys/queue.h glibc-2.10.1/misc/sys/queue.h
yann@1625
     6
yann@1625
     7
diff -durN glibc-2.10.1.orig/misc/sys/queue.h glibc-2.10.1/misc/sys/queue.h
yann@1625
     8
--- glibc-2.10.1.orig/misc/sys/queue.h	2008-03-05 06:50:30.000000000 +0100
yann@1625
     9
+++ glibc-2.10.1/misc/sys/queue.h	2009-11-13 00:49:51.000000000 +0100
yann@1625
    10
@@ -136,6 +136,11 @@
yann@1625
    11
 		(var);							\
yann@1625
    12
 		(var) = ((var)->field.le_next))
yann@1625
    13
 
yann@1625
    14
+#define	LIST_FOREACH_SAFE(var, head, field, tvar)			\
yann@1625
    15
+	for ((var) = LIST_FIRST((head));				\
yann@1625
    16
+	    (var) && ((tvar) = LIST_NEXT((var), field), 1);		\
yann@1625
    17
+	    (var) = (tvar))
yann@1625
    18
+
yann@1625
    19
 /*
yann@1625
    20
  * List access methods.
yann@1625
    21
  */
yann@1625
    22
@@ -197,6 +202,16 @@
yann@1625
    23
 #define	SLIST_FOREACH(var, head, field)					\
yann@1625
    24
 	for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
yann@1625
    25
 
yann@1625
    26
+#define	SLIST_FOREACH_SAFE(var, head, field, tvar)			\
yann@1625
    27
+	for ((var) = SLIST_FIRST((head));				\
yann@1625
    28
+	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);		\
yann@1625
    29
+	    (var) = (tvar))
yann@1625
    30
+
yann@1625
    31
+#define	SLIST_FOREACH_PREVPTR(var, varp, head, field)			\
yann@1625
    32
+	for ((varp) = &SLIST_FIRST((head));				\
yann@1625
    33
+	    ((var) = *(varp)) != NULL;					\
yann@1625
    34
+	    (varp) = &SLIST_NEXT((var), field))
yann@1625
    35
+
yann@1625
    36
 /*
yann@1625
    37
  * Singly-linked List access methods.
yann@1625
    38
  */
yann@1625
    39
@@ -242,6 +257,12 @@
yann@1625
    40
 	(head)->stqh_last = &(elm)->field.stqe_next;			\
yann@1625
    41
 } while (/*CONSTCOND*/0)
yann@1625
    42
 
yann@1625
    43
+#define	STAILQ_LAST(head, type, field)					\
yann@1625
    44
+	(STAILQ_EMPTY((head)) ?						\
yann@1625
    45
+		NULL :							\
yann@1625
    46
+	        ((struct type *)(void *)				\
yann@1625
    47
+		((char *)((head)->stqh_last) - __offsetof(struct type, field))))
yann@1625
    48
+
yann@1625
    49
 #define	STAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
yann@1625
    50
 	if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
yann@1625
    51
 		(head)->stqh_last = &(elm)->field.stqe_next;		\
yann@1625
    52
@@ -271,6 +292,11 @@
yann@1625
    53
 		(var);							\
yann@1625
    54
 		(var) = ((var)->field.stqe_next))
yann@1625
    55
 
yann@1625
    56
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar)			\
yann@1625
    57
+	for ((var) = STAILQ_FIRST((head));				\
yann@1625
    58
+		(var) && ((tvar) = STAILQ_NEXT((var), field), 1);	\
yann@1625
    59
+		(var) = (tvar))
yann@1625
    60
+
yann@1625
    61
 #define	STAILQ_CONCAT(head1, head2) do {				\
yann@1625
    62
 	if (!STAILQ_EMPTY((head2))) {					\
yann@1625
    63
 		*(head1)->stqh_last = (head2)->stqh_first;		\
yann@1625
    64
@@ -437,11 +463,21 @@
yann@1625
    65
 		(var);							\
yann@1625
    66
 		(var) = ((var)->field.tqe_next))
yann@1625
    67
 
ilya@2169
    68
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar)			\
yann@1625
    69
+	for ((var) = TAILQ_FIRST((head));				\
yann@1625
    70
+		(var) && ((tvar) = TAILQ_NEXT((var), field), 1);	\
yann@1625
    71
+		(var) = (tvar))
yann@1625
    72
+
yann@1625
    73
 #define	TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
yann@1625
    74
 	for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));	\
yann@1625
    75
 		(var);							\
yann@1625
    76
 		(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
yann@1625
    77
 
yann@1625
    78
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)	\
yann@1625
    79
+	for ((var) = TAILQ_LAST((head), headname);			\
yann@1625
    80
+		(var) && ((tvar) = TAILQ_PREV((var), headname, field), 1);	\
yann@1625
    81
+		(var) = (tvar))
yann@1625
    82
+
yann@1625
    83
 #define	TAILQ_CONCAT(head1, head2, field) do {				\
yann@1625
    84
 	if (!TAILQ_EMPTY(head2)) {					\
yann@1625
    85
 		*(head1)->tqh_last = (head2)->tqh_first;		\