From 942eddf533f61d674e57e3a176cadfaaecfbf27f Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 13 Mar 2008 22:30:43 +0100 Subject: [PATCH] New emp_searchque() --- include/queue.h | 2 ++ src/lib/gen/queue.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/queue.h b/include/queue.h index d2fc880c..73d3eac1 100644 --- a/include/queue.h +++ b/include/queue.h @@ -43,6 +43,8 @@ struct emp_qelem { extern void emp_remque(struct emp_qelem *); extern void emp_initque(struct emp_qelem *); +extern struct emp_qelem *emp_searchque(struct emp_qelem *, void *, + int (*)(struct emp_qelem *, void *)); extern void emp_insque(struct emp_qelem *, struct emp_qelem *); #endif diff --git a/src/lib/gen/queue.c b/src/lib/gen/queue.c index 8ddbed1d..34207276 100644 --- a/src/lib/gen/queue.c +++ b/src/lib/gen/queue.c @@ -33,6 +33,7 @@ #include +#include #include "queue.h" void @@ -58,6 +59,19 @@ emp_remque(struct emp_qelem *elem) elem->q_back->q_forw = elem->q_forw; } +struct emp_qelem * +emp_searchque(struct emp_qelem *queue, void *key, + int (*test)(struct emp_qelem *, void *)) +{ + struct emp_qelem *qp; + + for (qp = queue->q_forw; qp != queue; qp = qp->q_forw) { + if (test(qp, key)) + return qp; + } + return NULL; +} + void emp_initque(struct emp_qelem *elem) {