|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1990 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * This code is derived from software contributed to Berkeley by ! 6: * Ed James. ! 7: * ! 8: * Redistribution and use in source and binary forms are permitted ! 9: * provided that: (1) source distributions retain this entire copyright ! 10: * notice and comment, and (2) distributions including binaries display ! 11: * the following acknowledgement: ``This product includes software ! 12: * developed by the University of California, Berkeley and its contributors'' ! 13: * in the documentation or other materials provided with the distribution ! 14: * and in all advertising materials mentioning features or use of this ! 15: * software. Neither the name of the University nor the names of its ! 16: * contributors may be used to endorse or promote products derived ! 17: * from this software without specific prior written permission. ! 18: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 19: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 20: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 21: */ ! 22: ! 23: /* ! 24: * Copyright (c) 1987 by Ed James, UC Berkeley. All rights reserved. ! 25: * ! 26: * Copy permission is hereby granted provided that this notice is ! 27: * retained on all partial or complete copies. ! 28: * ! 29: * For more info on this and all of my stuff, mail [email protected]. ! 30: */ ! 31: ! 32: #ifndef lint ! 33: static char sccsid[] = "@(#)list.c 5.2 (Berkeley) 4/30/90"; ! 34: #endif /* not lint */ ! 35: ! 36: #include "include.h" ! 37: ! 38: PLANE * ! 39: newplane() ! 40: { ! 41: return ((PLANE *) calloc(1, sizeof (PLANE))); ! 42: } ! 43: ! 44: append(l, p) ! 45: LIST *l; ! 46: PLANE *p; ! 47: { ! 48: PLANE *q = NULL, *r = NULL; ! 49: ! 50: if (l->head == NULL) { ! 51: p->next = p->prev = NULL; ! 52: l->head = l->tail = p; ! 53: } else { ! 54: q = l -> head; ! 55: ! 56: while (q != NULL && q->plane_no < p->plane_no) { ! 57: r = q; ! 58: q = q -> next; ! 59: } ! 60: ! 61: if (q) { ! 62: if (r) { ! 63: p->prev = r; ! 64: r->next = p; ! 65: p->next = q; ! 66: q->prev = p; ! 67: } else { ! 68: p->next = q; ! 69: p->prev = NULL; ! 70: q->prev = p; ! 71: l->head = p; ! 72: } ! 73: } else { ! 74: l->tail->next = p; ! 75: p->next = NULL; ! 76: p->prev = l->tail; ! 77: l->tail = p; ! 78: } ! 79: } ! 80: } ! 81: ! 82: delete(l, p) ! 83: LIST *l; ! 84: PLANE *p; ! 85: { ! 86: if (l->head == NULL) ! 87: loser(p, "deleted a non-existant plane! Get help!"); ! 88: ! 89: if (l->head == p && l->tail == p) ! 90: l->head = l->tail = NULL; ! 91: else if (l->head == p) { ! 92: l->head = p->next; ! 93: l->head->prev = NULL; ! 94: } else if (l->tail == p) { ! 95: l->tail = p->prev; ! 96: l->tail->next = NULL; ! 97: } else { ! 98: p->prev->next = p->next; ! 99: p->next->prev = p->prev; ! 100: } ! 101: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.