patches/glibc/ports-2.12.1/150-queue-header-updates.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:26:53 2011 +0200 (2011-08-02)
changeset 2592 4908eb2b6f17
permissions -rw-r--r--
scripts/functions: cvs retrieval first tries the mirror for tarballs

The cvs 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 cvs.

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 cvs retrieval will kick in.

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