Mercurial > hg > early-roguelike
annotate urogue/list.c @ 317:aab761616489 default tip
Rearrange some Autoconf files.
Autoconf was failing to detect install-sh at the top level and needed
some explicit directions.  It also wants config.guess and config.sub to
be provided too.
A few other macros have also been updated.
| author | John "Elwin" Edwards | 
|---|---|
| date | Tue, 05 Sep 2023 20:05:24 -0400 | 
| parents | c495a4f288c6 | 
| children | 
| rev | line source | 
|---|---|
| 
256
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
2 list.c - Functions for dealing with linked lists of goodies | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
3 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
4 UltraRogue: The Ultimate Adventure in the Dungeons of Doom | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
5 Copyright (C) 1985, 1986, 1992, 1993, 1995 Herb Chong | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
6 All rights reserved. | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
7 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
8 Based on "Advanced Rogue" | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
9 Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
10 All rights reserved. | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
11 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
12 Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
13 Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
14 All rights reserved. | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
15 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
16 See the file LICENSE.TXT for full copyright and licensing information. | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
17 */ | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
18 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
19 #include <stdlib.h> | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
20 #include <stdio.h> | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
21 #include <string.h> | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
22 #include "rogue.h" | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
23 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
24 static char errbuf[2 * LINELEN]; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
25 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
26 /* | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
27 ur_alloc() | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
28 ur_free() | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
29 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
30 These are just calls to the system alloc and free, and they also adjust | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
31 the totals. The buffer is cleared out because idents need to be zero | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
32 before going into the pack, or they will be used as indices! | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
33 */ | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
34 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
35 void * | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
36 ur_alloc(size_t size) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
37 { | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
38 char *buf_p; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
39 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
40 total++; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
41 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
42 buf_p = mem_malloc(size); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
43 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
44 if (buf_p == NULL) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
45 return(NULL); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
46 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
47 memset(buf_p,0,size); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
48 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
49 return(buf_p); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
50 } | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
51 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
52 void | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
53 ur_free(void *buf_p) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
54 { | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
55 mem_free(buf_p); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
56 total--; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
57 } | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
58 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
59 /* | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
60 detach() | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
61 Takes an item out of whatever linked list it might be in | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
62 .... function needs to be renamed.... | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
63 */ | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
64 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
65 void | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
66 _detach(struct linked_list **list, struct linked_list *item) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
67 { | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
68 if (*list == item) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
69 *list = next(item); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
70 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
71 if (prev(item) != NULL) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
72 item->l_prev->l_next = next(item); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
73 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
74 if (next(item) != NULL) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
75 item->l_next->l_prev = prev(item); | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
76 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
77 item->l_next = NULL; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
78 item->l_prev = NULL; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
79 } | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
80 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
81 /* | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
82 _attach() | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
83 add an item to the head of a list | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
84 ... this needs to be renamed as well ... | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
85 */ | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
86 | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
87 void | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
88 _attach(struct linked_list **list, struct linked_list *item) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
89 { | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
90 if (*list != NULL) | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
91 { | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
92 item->l_next = *list; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
93 (*list)->l_prev = item; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
94 item->l_prev = NULL; | 
| 
 
c495a4f288c6
Import UltraRogue from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
