diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-06-25 18:18:57 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-06-25 18:18:57 -0400 |
commit | febbd12d00883a716a9edca25011f8aa306b859b (patch) | |
tree | 45d291973571bebe85963add9ba94d4c8556d5e3 /src/search/insque.c | |
parent | 49388f3b7b72a1695bef05f64439b602b2e77a53 (diff) | |
download | musl-febbd12d00883a716a9edca25011f8aa306b859b.tar.gz musl-febbd12d00883a716a9edca25011f8aa306b859b.tar.xz musl-febbd12d00883a716a9edca25011f8aa306b859b.zip |
XSI search.h API implementation by Szabolcs Nagy
Diffstat (limited to 'src/search/insque.c')
-rw-r--r-- | src/search/insque.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/search/insque.c b/src/search/insque.c new file mode 100644 index 00000000..b7475d84 --- /dev/null +++ b/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; +} |