Index: fusl/src/search/insque.c |
diff --git a/fusl/src/search/insque.c b/fusl/src/search/insque.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b7475d84f31eb442550e5a4197d473ff36bda755 |
--- /dev/null |
+++ b/fusl/src/search/insque.c |
@@ -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; |
+} |