annotate place.c @ 203:3a25180d3a5c

Abort on line numbering or column numbering overflow. Line numbers are limited to values that fit in "unsigned int". Also reject input lines longer than 2^32-1 characters. It seems reasonable to presume that any input that violates these constraints is someone screwing around and not a serious attempt to compile or preprocess anything useful. Done in response to n2129, but without getting into any of the silliness found there.
author David A. Holland
date Tue, 01 Aug 2017 14:51:04 -0400
parents 1d2bad7151f9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
1 /*-
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
2 * Copyright (c) 2010 The NetBSD Foundation, Inc.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
3 * All rights reserved.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
4 *
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
5 * This code is derived from software contributed to The NetBSD Foundation
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
6 * by David A. Holland.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
7 *
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
8 * Redistribution and use in source and binary forms, with or without
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
9 * modification, are permitted provided that the following conditions
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
10 * are met:
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
11 * 1. Redistributions of source code must retain the above copyright
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
12 * notice, this list of conditions and the following disclaimer.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
13 * 2. Redistributions in binary form must reproduce the above copyright
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
14 * notice, this list of conditions and the following disclaimer in the
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
15 * documentation and/or other materials provided with the distribution.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
16 *
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
27 * POSSIBILITY OF SUCH DAMAGE.
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
28 */
76c114899f63 copyrights
David A. Holland
parents: 28
diff changeset
29
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
30 #include <assert.h>
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
31 #include <stdarg.h>
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
32 #include <stdio.h>
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
33 #include <stdlib.h>
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
34 #include <string.h>
199
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
35 #include <errno.h>
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
36
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
37 #include "utils.h"
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
38 #include "array.h"
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
39 #include "place.h"
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
40
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
41 struct placefile {
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
42 struct place includedfrom;
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
43 char *dir;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
44 char *name;
28
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
45 int depth;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
46 bool fromsystemdir;
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
47 };
107
33954a07d013 __unused -> UNUSED
David A. Holland
parents: 95
diff changeset
48 DECLARRAY(placefile, static UNUSED);
47
2e25e55dba6b Fix inline usage as per the version in dholland-make2.
David A. Holland
parents: 39
diff changeset
49 DEFARRAY(placefile, static);
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
50
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
51 static struct placefilearray placefiles;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
52 static bool overall_failure;
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
53
142
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
54 static const char *myprogname;
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
55
199
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
56 static FILE *debuglogfile;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
57
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
58 ////////////////////////////////////////////////////////////
176
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
59 // placefiles
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
60
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
61 static
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
62 struct placefile *
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
63 placefile_create(const struct place *from, const char *name,
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
64 bool fromsystemdir)
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
65 {
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
66 struct placefile *pf;
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
67 const char *s;
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
68 size_t len;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
69
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
70 pf = domalloc(sizeof(*pf));
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
71 pf->includedfrom = *from;
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
72
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
73 s = strrchr(name, '/');
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
74 len = (s == NULL) ? 0 : s - name;
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
75 pf->dir = dostrndup(name, len);
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
76
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
77 pf->name = dostrdup(name);
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
78 pf->fromsystemdir = fromsystemdir;
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
79
28
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
80 if (from->file != NULL) {
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
81 pf->depth = from->file->depth + 1;
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
82 } else {
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
83 pf->depth = 1;
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
84 }
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
85 return pf;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
86 }
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
87
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
88 static
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
89 void
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
90 placefile_destroy(struct placefile *pf)
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
91 {
39
337110e7240a Pass the size to free; it makes debug checking easier.
David A. Holland
parents: 38
diff changeset
92 dostrfree(pf->name);
337110e7240a Pass the size to free; it makes debug checking easier.
David A. Holland
parents: 38
diff changeset
93 dofree(pf, sizeof(*pf));
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
94 }
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
95
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
96 DESTROYALL_ARRAY(placefile, );
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
97
112
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
98 const char *
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
99 place_getparsedir(const struct place *place)
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
100 {
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
101 if (place->file == NULL) {
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
102 return ".";
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
103 }
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
104 return place->file->dir;
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
105 }
2b0b61fd1a36 Fix handling of relative includes.
David A. Holland
parents: 107
diff changeset
106
176
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
107 static
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
108 struct placefile *
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
109 placefile_find(const struct place *incfrom, const char *name)
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
110 {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
111 unsigned i, num;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
112 struct placefile *pf;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
113
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
114 num = placefilearray_num(&placefiles);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
115 for (i=0; i<num; i++) {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
116 pf = placefilearray_get(&placefiles, i);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
117 if (place_eq(incfrom, &pf->includedfrom) &&
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
118 !strcmp(name, pf->name)) {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
119 return pf;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
120 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
121 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
122 return NULL;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
123 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
124
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
125 void
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
126 place_changefile(struct place *p, const char *name)
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
127 {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
128 struct placefile *pf;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
129
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
130 assert(p->type == P_FILE);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
131 if (!strcmp(name, p->file->name)) {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
132 return;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
133 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
134 pf = placefile_find(&p->file->includedfrom, name);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
135 if (pf == NULL) {
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
136 pf = placefile_create(&p->file->includedfrom, name,
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
137 p->file->fromsystemdir);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
138 placefilearray_add(&placefiles, pf, NULL);
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
139 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
140 p->file = pf;
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
141 }
a2f047301c15 Replace Joerg's place_setfile with something that at least sort of works.
David A. Holland
parents: 160
diff changeset
142
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
143 const struct placefile *
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
144 place_addfile(const struct place *place, const char *file, bool issystem)
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
145 {
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
146 struct placefile *pf;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
147
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
148 pf = placefile_create(place, file, issystem);
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
149 placefilearray_add(&placefiles, pf, NULL);
114
05d67dd74e1f Reduce the maximum include depth from 128 to 120.
David A. Holland
parents: 112
diff changeset
150 if (pf->depth > 120) {
28
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
151 complain(place, "Maximum include nesting depth exceeded");
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
152 die();
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
153 }
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
154 return pf;
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
155 }
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
156
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
157 ////////////////////////////////////////////////////////////
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
158 // places
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
159
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
160 void
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
161 place_setnowhere(struct place *p)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
162 {
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
163 p->type = P_NOWHERE;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
164 p->file = NULL;
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
165 p->line = 0;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
166 p->column = 0;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
167 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
168
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
169 void
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
170 place_setbuiltin(struct place *p, unsigned num)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
171 {
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
172 p->type = P_BUILTIN;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
173 p->file = NULL;
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
174 p->line = num;
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
175 p->column = 1;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
176 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
177
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
178 void
14
David A. Holland
parents: 13
diff changeset
179 place_setcommandline(struct place *p, unsigned line, unsigned column)
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
180 {
14
David A. Holland
parents: 13
diff changeset
181 p->type = P_COMMANDLINE;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
182 p->file = NULL;
14
David A. Holland
parents: 13
diff changeset
183 p->line = line;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
184 p->column = column;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
185 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
186
14
David A. Holland
parents: 13
diff changeset
187 void
David A. Holland
parents: 13
diff changeset
188 place_setfilestart(struct place *p, const struct placefile *pf)
David A. Holland
parents: 13
diff changeset
189 {
28
8a955e3dda2c two more tests, more fixes
David A. Holland
parents: 14
diff changeset
190 p->type = P_FILE;
14
David A. Holland
parents: 13
diff changeset
191 p->file = pf;
David A. Holland
parents: 13
diff changeset
192 p->line = 1;
David A. Holland
parents: 13
diff changeset
193 p->column = 1;
David A. Holland
parents: 13
diff changeset
194 }
David A. Holland
parents: 13
diff changeset
195
203
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
196 void
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
197 place_addcolumns(struct place *p, unsigned cols)
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
198 {
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
199 unsigned newcol;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
200
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
201 newcol = p->column + cols;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
202 if (newcol < p->column) {
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
203 /* overflow (use the old place to complain) */
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
204 complain(p, "Column numbering overflow");
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
205 die();
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
206 }
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
207 p->column = newcol;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
208 }
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
209
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
210 void
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
211 place_addlines(struct place *p, unsigned lines)
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
212 {
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
213 unsigned nextline;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
214
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
215 nextline = p->line + lines;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
216 if (nextline < p->line) {
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
217 /* overflow (use the old place to complain) */
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
218 complain(p, "Line numbering overflow");
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
219 die();
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
220 }
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
221 p->line = nextline;
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
222 }
3a25180d3a5c Abort on line numbering or column numbering overflow.
David A. Holland
parents: 199
diff changeset
223
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
224 const char *
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
225 place_getname(const struct place *p)
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
226 {
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
227 switch (p->type) {
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
228 case P_NOWHERE: return "<nowhere>";
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
229 case P_BUILTIN: return "<built-in>";
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
230 case P_COMMANDLINE: return "<command-line>";
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
231 case P_FILE: return p->file->name;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
232 }
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
233 assert(0);
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
234 return NULL;
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
235 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
236
185
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
237 bool
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
238 place_samefile(const struct place *a, const struct place *b)
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
239 {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
240 if (a->type != b->type) {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
241 return false;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
242 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
243 if (a->file != b->file) {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
244 return false;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
245 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
246 return true;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
247 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
248
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
249 bool
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
250 place_eq(const struct place *a, const struct place *b)
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
251 {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
252 if (!place_samefile(a, b)) {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
253 return false;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
254 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
255 if (a->line != b->line || a->column != b->column) {
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
256 return false;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
257 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
258 return true;
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
259 }
16b4451e34b8 Add the ability to output line numbers, sort of.
David A. Holland
parents: 176
diff changeset
260
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
261 static
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
262 void
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
263 place_printfrom(const struct place *p)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
264 {
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
265 const struct place *from;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
266
95
1c0575f7dd46 Don't crash printing the commandline place.
David A. Holland
parents: 47
diff changeset
267 if (p->file == NULL) {
1c0575f7dd46 Don't crash printing the commandline place.
David A. Holland
parents: 47
diff changeset
268 return;
1c0575f7dd46 Don't crash printing the commandline place.
David A. Holland
parents: 47
diff changeset
269 }
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
270 from = &p->file->includedfrom;
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
271 if (from->type != P_NOWHERE) {
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
272 place_printfrom(from);
12
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
273 fprintf(stderr, "In file included from %s:%u:%u:\n",
6c15ca895585 improve places more
David A. Holland
parents: 11
diff changeset
274 place_getname(from), from->line, from->column);
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
275 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
276 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
277
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
278 ////////////////////////////////////////////////////////////
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
279 // complaints
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
280
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
281 void
142
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
282 complain_init(const char *pn)
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
283 {
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
284 myprogname = pn;
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
285 }
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
286
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
287 void
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
288 complain(const struct place *p, const char *fmt, ...)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
289 {
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
290 va_list ap;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
291
142
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
292 if (p != NULL) {
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
293 place_printfrom(p);
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
294 fprintf(stderr, "%s:%u:%u: ", place_getname(p),
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
295 p->line, p->column);
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
296 } else {
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
297 fprintf(stderr, "%s: ", myprogname);
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 114
diff changeset
298 }
8
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
299 va_start(ap, fmt);
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
300 vfprintf(stderr, fmt, ap);
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
301 va_end(ap);
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
302 fprintf(stderr, "\n");
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
303 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
304
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
305 void
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
306 complain_fail(void)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
307 {
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
308 overall_failure = true;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
309 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
310
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
311 bool
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
312 complain_failed(void)
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
313 {
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
314 return overall_failure;
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
315 }
97243badae69 split place stuff to its own file
David A. Holland
parents:
diff changeset
316
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
317 ////////////////////////////////////////////////////////////
199
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
318 // debug logging
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
319
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
320 void
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
321 debuglog_open(const struct place *p, /*const*/ char *file)
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
322 {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
323 assert(debuglogfile == NULL);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
324 debuglogfile = fopen(file, "w");
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
325 if (debuglogfile == NULL) {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
326 complain(p, "%s: %s", file, strerror(errno));
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
327 die();
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
328 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
329 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
330
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
331 void
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
332 debuglog_close(void)
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
333 {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
334 if (debuglogfile != NULL) {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
335 fclose(debuglogfile);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
336 debuglogfile = NULL;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
337 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
338 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
339
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
340 PF(2, 3) void
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
341 debuglog(const struct place *p, const char *fmt, ...)
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
342 {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
343 va_list ap;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
344
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
345 if (debuglogfile == NULL) {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
346 return;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
347 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
348
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
349 fprintf(debuglogfile, "%s:%u: ", place_getname(p), p->line);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
350 va_start(ap, fmt);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
351 vfprintf(debuglogfile, fmt, ap);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
352 va_end(ap);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
353 fprintf(debuglogfile, "\n");
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
354 fflush(debuglogfile);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
355 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
356
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
357 PF(3, 4) void
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
358 debuglog2(const struct place *p, const struct place *p2, const char *fmt, ...)
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
359 {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
360 va_list ap;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
361
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
362 if (debuglogfile == NULL) {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
363 return;
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
364 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
365
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
366 fprintf(debuglogfile, "%s:%u: ", place_getname(p), p->line);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
367 if (place_samefile(p, p2)) {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
368 fprintf(debuglogfile, "(block began at line %u) ",
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
369 p2->line);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
370 } else {
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
371 fprintf(debuglogfile, "(block began at %s:%u)",
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
372 place_getname(p2), p2->line);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
373 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
374 va_start(ap, fmt);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
375 vfprintf(debuglogfile, fmt, ap);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
376 va_end(ap);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
377 fprintf(debuglogfile, "\n");
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
378 fflush(debuglogfile);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
379 }
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
380
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 185
diff changeset
381 ////////////////////////////////////////////////////////////
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
382 // module init and cleanup
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
383
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
384 void
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
385 place_init(void)
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
386 {
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
387 placefilearray_init(&placefiles);
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
388 }
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
389
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
390 void
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
391 place_cleanup(void)
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
392 {
13
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
393 placefilearray_destroyall(&placefiles);
120629a5d6bf seenfile -> placefile (clearer)
David A. Holland
parents: 12
diff changeset
394 placefilearray_cleanup(&placefiles);
10
800f3a560a3b move seenfiles to place.c too
David A. Holland
parents: 8
diff changeset
395 }