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