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
#include <config.h>
+#include <stddef.h>
#include "queue.h"
void
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)
{