patches/glibc/ports-2.13/150-queue-header-updates.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

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