annotate utils.h @ 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: 18
diff changeset
1 /*-
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
2 * Copyright (c) 2010 The NetBSD Foundation, Inc.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
3 * All rights reserved.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
4 *
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
5 * This code is derived from software contributed to The NetBSD Foundation
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
6 * by David A. Holland.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
7 *
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
8 * Redistribution and use in source and binary forms, with or without
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
9 * modification, are permitted provided that the following conditions
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
10 * are met:
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
11 * 1. Redistributions of source code must retain the above copyright
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
12 * notice, this list of conditions and the following disclaimer.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
13 * 2. Redistributions in binary form must reproduce the above copyright
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
14 * notice, this list of conditions and the following disclaimer in the
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
15 * documentation and/or other materials provided with the distribution.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
16 *
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
76c114899f63 copyrights
David A. Holland
parents: 18
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: 18
diff changeset
27 * POSSIBILITY OF SUCH DAMAGE.
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
28 */
76c114899f63 copyrights
David A. Holland
parents: 18
diff changeset
29
6
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
30 #include <stddef.h>
183
4c3375895c6e Don't use <stdbool.h> unless __STDC__ is large enough.
David A. Holland
parents: 166
diff changeset
31 #include "bool.h"
6
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
32
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
33 struct place;
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
34
97
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
35 #if defined(__CLANG__) || defined(__GNUC__)
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
36 #define PF(a, b) __attribute__((__format__(__printf__, a, b)))
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
37 #define DEAD __attribute__((__noreturn__))
107
33954a07d013 __unused -> UNUSED
David A. Holland
parents: 97
diff changeset
38 #define UNUSED __attribute__((__unused__))
97
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
39 #else
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
40 #define PF(a, b)
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
41 #define DEAD
107
33954a07d013 __unused -> UNUSED
David A. Holland
parents: 97
diff changeset
42 #define UNUSED
97
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
43 #endif
6
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
44
3
bfa97d43197e support code
David A. Holland
parents:
diff changeset
45 #define HOWMANY(arr) (sizeof(arr)/sizeof((arr)[0]))
bfa97d43197e support code
David A. Holland
parents:
diff changeset
46
16
9dda765ee85c expression evaluator
David A. Holland
parents: 8
diff changeset
47 extern const char ws[];
9dda765ee85c expression evaluator
David A. Holland
parents: 8
diff changeset
48 extern const char alnum[];
166
4ea0ce804d22 Don't need digits[], take it back out.
David A. Holland
parents: 160
diff changeset
49
16
9dda765ee85c expression evaluator
David A. Holland
parents: 8
diff changeset
50
3
bfa97d43197e support code
David A. Holland
parents:
diff changeset
51 void *domalloc(size_t len);
39
337110e7240a Pass the size to free; it makes debug checking easier.
David A. Holland
parents: 38
diff changeset
52 void *dorealloc(void *ptr, size_t oldlen, size_t newlen);
337110e7240a Pass the size to free; it makes debug checking easier.
David A. Holland
parents: 38
diff changeset
53 void dofree(void *ptr, size_t len);
3
bfa97d43197e support code
David A. Holland
parents:
diff changeset
54
bfa97d43197e support code
David A. Holland
parents:
diff changeset
55 char *dostrdup(const char *s);
bfa97d43197e support code
David A. Holland
parents:
diff changeset
56 char *dostrdup2(const char *s, const char *t);
bfa97d43197e support code
David A. Holland
parents:
diff changeset
57 char *dostrdup3(const char *s, const char *t, const char *u);
18
c08a947d8f30 deal with macro parameters
David A. Holland
parents: 16
diff changeset
58 char *dostrndup(const char *s, size_t len);
39
337110e7240a Pass the size to free; it makes debug checking easier.
David A. Holland
parents: 38
diff changeset
59 void dostrfree(char *s);
18
c08a947d8f30 deal with macro parameters
David A. Holland
parents: 16
diff changeset
60
c08a947d8f30 deal with macro parameters
David A. Holland
parents: 16
diff changeset
61 size_t notrailingws(char *buf, size_t len);
c08a947d8f30 deal with macro parameters
David A. Holland
parents: 16
diff changeset
62 bool is_identifier(const char *str);
3
bfa97d43197e support code
David A. Holland
parents:
diff changeset
63
8
97243badae69 split place stuff to its own file
David A. Holland
parents: 6
diff changeset
64 /* in place.c */
142
26ee741196d1 Allow complain(NULL, format, ...)
David A. Holland
parents: 107
diff changeset
65 void complain_init(const char *progname);
199
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 183
diff changeset
66 PF(2, 3) void complain(const struct place *, const char *fmt, ...);
6
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
67 void complain_fail(void);
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
68 bool complain_failed(void);
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
69
199
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 183
diff changeset
70 void 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: 183
diff changeset
71 void debuglog_close(void);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 183
diff changeset
72 PF(2, 3) void 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: 183
diff changeset
73 PF(3, 4) void debuglog2(const struct place *p, const struct place *p2,
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 183
diff changeset
74 const char *fmt, ...);
1d2bad7151f9 Add a -debuglog option to send an execution trace to a file.
David A. Holland
parents: 183
diff changeset
75
6
0601b6e8e53d checkpoint - can find files
David A. Holland
parents: 3
diff changeset
76 /* in main.c */
3
bfa97d43197e support code
David A. Holland
parents:
diff changeset
77 void freestringlater(char *s);
97
83ad94eec98f don't rely on netbsd cdefs.h
David A. Holland
parents: 43
diff changeset
78 DEAD void die(void);