1*86d7f5d3SJohn Marino /*
2*86d7f5d3SJohn Marino * Initial implementation:
3*86d7f5d3SJohn Marino * Copyright (c) 2002 Robert Drehmel
4*86d7f5d3SJohn Marino * All rights reserved.
5*86d7f5d3SJohn Marino *
6*86d7f5d3SJohn Marino * As long as the above copyright statement and this notice remain
7*86d7f5d3SJohn Marino * unchanged, you can do what ever you want with this file.
8*86d7f5d3SJohn Marino *
9*86d7f5d3SJohn Marino * $FreeBSD: src/lib/libc/stdlib/insque.c,v 1.3 2003/01/04 07:34:41 tjr Exp $
10*86d7f5d3SJohn Marino */
11*86d7f5d3SJohn Marino
12*86d7f5d3SJohn Marino #define _SEARCH_PRIVATE
13*86d7f5d3SJohn Marino #include <search.h>
14*86d7f5d3SJohn Marino #ifdef DEBUG
15*86d7f5d3SJohn Marino #include <stdio.h>
16*86d7f5d3SJohn Marino #else
17*86d7f5d3SJohn Marino #include <stdlib.h> /* for NULL */
18*86d7f5d3SJohn Marino #endif
19*86d7f5d3SJohn Marino
20*86d7f5d3SJohn Marino void
insque(void * element,void * pred)21*86d7f5d3SJohn Marino insque(void *element, void *pred)
22*86d7f5d3SJohn Marino {
23*86d7f5d3SJohn Marino struct que_elem *prev, *next, *elem;
24*86d7f5d3SJohn Marino
25*86d7f5d3SJohn Marino elem = (struct que_elem *)element;
26*86d7f5d3SJohn Marino prev = (struct que_elem *)pred;
27*86d7f5d3SJohn Marino
28*86d7f5d3SJohn Marino if (prev == NULL) {
29*86d7f5d3SJohn Marino elem->prev = elem->next = NULL;
30*86d7f5d3SJohn Marino return;
31*86d7f5d3SJohn Marino }
32*86d7f5d3SJohn Marino
33*86d7f5d3SJohn Marino next = prev->next;
34*86d7f5d3SJohn Marino if (next != NULL) {
35*86d7f5d3SJohn Marino #ifdef DEBUG
36*86d7f5d3SJohn Marino if (next->prev != prev) {
37*86d7f5d3SJohn Marino fprintf(stderr, "insque: Inconsistency detected:"
38*86d7f5d3SJohn Marino " next(%p)->prev(%p) != prev(%p)\n",
39*86d7f5d3SJohn Marino next, next->prev, prev);
40*86d7f5d3SJohn Marino }
41*86d7f5d3SJohn Marino #endif
42*86d7f5d3SJohn Marino next->prev = elem;
43*86d7f5d3SJohn Marino }
44*86d7f5d3SJohn Marino prev->next = elem;
45*86d7f5d3SJohn Marino elem->prev = prev;
46*86d7f5d3SJohn Marino elem->next = next;
47*86d7f5d3SJohn Marino }
48