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