[BZ #5779]
authorUlrich Drepper <drepper@redhat.com>
Wed, 5 Mar 2008 05:50:39 +0000 (05:50 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 5 Mar 2008 05:50:39 +0000 (05:50 +0000)
* misc/sys/queue.h: Add STAILQ_CONCAT and TAILQ_CONCAT definitions.
Patch by Roy Marples <roy@marples.name>.

ChangeLog
misc/sys/queue.h

index f3ebffb..2e5a9b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2008-03-04  Ulrich Drepper  <drepper@redhat.com>
 
+       [BZ #5779]
+       * misc/sys/queue.h: Add STAILQ_CONCAT and TAILQ_CONCAT definitions.
+       Patch by Roy Marples <roy@marples.name>.
+
        [BZ #5736]
        * malloc/malloc.c: Fix typo in comment.
 
index b0e6b38..daf4553 100644 (file)
@@ -271,6 +271,14 @@ struct {                                                           \
                (var);                                                  \
                (var) = ((var)->field.stqe_next))
 
+#define        STAILQ_CONCAT(head1, head2) do {                                \
+       if (!STAILQ_EMPTY((head2))) {                                   \
+               *(head1)->stqh_last = (head2)->stqh_first;              \
+               (head1)->stqh_last = (head2)->stqh_last;                \
+               STAILQ_INIT((head2));                                   \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
 /*
  * Singly-linked Tail queue access methods.
  */
@@ -434,6 +442,15 @@ struct {                                                           \
                (var);                                                  \
                (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
 
+#define        TAILQ_CONCAT(head1, head2, field) do {                          \
+       if (!TAILQ_EMPTY(head2)) {                                      \
+               *(head1)->tqh_last = (head2)->tqh_first;                \
+               (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+               (head1)->tqh_last = (head2)->tqh_last;                  \
+               TAILQ_INIT((head2));                                    \
+       }                                                               \
+} while (/*CONSTCOND*/0)
+
 /*
  * Tail queue access methods.
  */