XSI search.h API implementation by Szabolcs Nagy
[musl] / src / search / insque.c
diff --git a/src/search/insque.c b/src/search/insque.c
new file mode 100644 (file)
index 0000000..b7475d8
--- /dev/null
@@ -0,0 +1,32 @@
+#include <search.h>
+
+struct node {
+       struct node *next;
+       struct node *prev;
+};
+
+void insque(void *element, void *pred)
+{
+       struct node *e = element;
+       struct node *p = pred;
+
+       if (!p) {
+               e->next = e->prev = 0;
+               return;
+       }
+       e->next = p->next;
+       e->prev = p;
+       p->next = e;
+       if (e->next)
+               e->next->prev = e;
+}
+
+void remque(void *element)
+{
+       struct node *e = element;
+
+       if (e->next)
+               e->next->prev = e->prev;
+       if (e->prev)
+               e->prev->next = e->next;
+}