2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
11 static char rcs_id[] = "$Id: list.c,v 2.4 1994/06/24 10:12:46 ceriel Exp $" ;
12 static char rcs_list[] = RCS_LIST ;
15 /* List handling, operations allowed:
16 adding strings to the list,
17 throwing away whole lists,
21 l_add(header,string) Add an element to a list.
22 header List header, list_head *
23 string String pointer, char *
24 the string is NOT copied
26 l_clear(header) Delete an whole list.
27 header List header, list_head *
29 l_throw(header) Delete a list of strings.
30 header List header, list_head *
35 l_add(header,string) list_head *header ; char *string ; {
36 register list_elem *new;
39 new= (list_elem *)getcore(sizeof *new);
40 l_content(*new)= string ;
42 l_next(*new)= (list_elem *)0 ;
43 if ( !header->ca_first ) {
44 header->ca_first= new ;
46 header->ca_last->ca_next= new ;
48 header->ca_last= new ;
51 l_clear(header) list_head *header ; {
52 register list_elem *old, *next;
53 for ( old=header->ca_first ; old ; old= next ) {
55 freecore((char *)old) ;
57 header->ca_first= (list_elem *) 0 ;
58 header->ca_last = (list_elem *) 0 ;
61 l_throw(header) list_head *header ; {
62 register list_elem *old, *next;
63 for ( old=header->ca_first ; old ; old= next ) {
64 throws(l_content(*old)) ;
66 freecore((char *)old) ;
68 header->ca_first= (list_elem *) 0 ;
69 header->ca_last = (list_elem *) 0 ;