Blame


1 f36fd90a 2022-07-09 op #if TEST__MMD
2 f36fd90a 2022-07-09 op int
3 f36fd90a 2022-07-09 op main(void)
4 f36fd90a 2022-07-09 op {
5 f36fd90a 2022-07-09 op return 0;
6 f36fd90a 2022-07-09 op }
7 f36fd90a 2022-07-09 op #endif /* TEST_NOOP */
8 f36fd90a 2022-07-09 op #if TEST___PROGNAME
9 f36fd90a 2022-07-09 op int
10 f36fd90a 2022-07-09 op main(void)
11 f36fd90a 2022-07-09 op {
12 f36fd90a 2022-07-09 op extern char *__progname;
13 f36fd90a 2022-07-09 op
14 f36fd90a 2022-07-09 op return !__progname;
15 f36fd90a 2022-07-09 op }
16 f36fd90a 2022-07-09 op #endif /* TEST___PROGNAME */
17 f36fd90a 2022-07-09 op #if TEST_ARC4RANDOM
18 f36fd90a 2022-07-09 op #include <stdlib.h>
19 f36fd90a 2022-07-09 op
20 f36fd90a 2022-07-09 op int
21 f36fd90a 2022-07-09 op main(void)
22 f36fd90a 2022-07-09 op {
23 f36fd90a 2022-07-09 op return (arc4random() + 1) ? 0 : 1;
24 f36fd90a 2022-07-09 op }
25 f36fd90a 2022-07-09 op #endif /* TEST_ARC4RANDOM */
26 f36fd90a 2022-07-09 op #if TEST_B64_NTOP
27 f36fd90a 2022-07-09 op #include <netinet/in.h>
28 f36fd90a 2022-07-09 op #include <resolv.h>
29 f36fd90a 2022-07-09 op
30 f36fd90a 2022-07-09 op int
31 f36fd90a 2022-07-09 op main(void)
32 f36fd90a 2022-07-09 op {
33 f36fd90a 2022-07-09 op const char *src = "hello world";
34 f36fd90a 2022-07-09 op char output[1024];
35 f36fd90a 2022-07-09 op
36 f36fd90a 2022-07-09 op return b64_ntop((const unsigned char *)src, 11, output, sizeof(output)) > 0 ? 0 : 1;
37 f36fd90a 2022-07-09 op }
38 f36fd90a 2022-07-09 op #endif /* TEST_B64_NTOP */
39 f36fd90a 2022-07-09 op #if TEST_CAPSICUM
40 f36fd90a 2022-07-09 op #include <sys/capsicum.h>
41 f36fd90a 2022-07-09 op
42 f36fd90a 2022-07-09 op int
43 f36fd90a 2022-07-09 op main(void)
44 f36fd90a 2022-07-09 op {
45 f36fd90a 2022-07-09 op cap_enter();
46 f36fd90a 2022-07-09 op return(0);
47 f36fd90a 2022-07-09 op }
48 f36fd90a 2022-07-09 op #endif /* TEST_CAPSICUM */
49 f36fd90a 2022-07-09 op #if TEST_CRYPT
50 f36fd90a 2022-07-09 op #if defined(__linux__)
51 f36fd90a 2022-07-09 op # define _GNU_SOURCE /* old glibc */
52 f36fd90a 2022-07-09 op # define _DEFAULT_SOURCE /* new glibc */
53 f36fd90a 2022-07-09 op #endif
54 f36fd90a 2022-07-09 op #if defined(__sun)
55 f36fd90a 2022-07-09 op # ifndef _XOPEN_SOURCE /* SunOS already defines */
56 f36fd90a 2022-07-09 op # define _XOPEN_SOURCE /* XPGx */
57 f36fd90a 2022-07-09 op # endif
58 f36fd90a 2022-07-09 op # define _XOPEN_SOURCE_EXTENDED 1 /* XPG4v2 */
59 f36fd90a 2022-07-09 op # ifndef __EXTENSIONS__ /* SunOS already defines */
60 f36fd90a 2022-07-09 op # define __EXTENSIONS__ /* reallocarray, etc. */
61 f36fd90a 2022-07-09 op # endif
62 f36fd90a 2022-07-09 op #endif
63 f36fd90a 2022-07-09 op #include <unistd.h>
64 f36fd90a 2022-07-09 op
65 f36fd90a 2022-07-09 op int main(void)
66 f36fd90a 2022-07-09 op {
67 f36fd90a 2022-07-09 op char *v;
68 f36fd90a 2022-07-09 op
69 f36fd90a 2022-07-09 op v = crypt("this_is_a_key", "123455");
70 f36fd90a 2022-07-09 op return v == NULL;
71 f36fd90a 2022-07-09 op }
72 f36fd90a 2022-07-09 op #endif /* TEST_CRYPT */
73 f36fd90a 2022-07-09 op #if TEST_CRYPT_NEWHASH
74 f36fd90a 2022-07-09 op #include <pwd.h> /* _PASSWORD_LEN */
75 f36fd90a 2022-07-09 op #include <unistd.h>
76 f36fd90a 2022-07-09 op
77 f36fd90a 2022-07-09 op int
78 f36fd90a 2022-07-09 op main(void)
79 f36fd90a 2022-07-09 op {
80 f36fd90a 2022-07-09 op const char *v = "password";
81 f36fd90a 2022-07-09 op char hash[_PASSWORD_LEN];
82 f36fd90a 2022-07-09 op
83 f36fd90a 2022-07-09 op if (crypt_newhash(v, "bcrypt,a", hash, sizeof(hash)) == -1)
84 f36fd90a 2022-07-09 op return 1;
85 f36fd90a 2022-07-09 op if (crypt_checkpass(v, hash) == -1)
86 f36fd90a 2022-07-09 op return 1;
87 f36fd90a 2022-07-09 op
88 f36fd90a 2022-07-09 op return 0;
89 f36fd90a 2022-07-09 op }
90 f36fd90a 2022-07-09 op #endif /* TEST_CRYPT_NEWHASH */
91 f36fd90a 2022-07-09 op #if TEST_ENDIAN_H
92 f36fd90a 2022-07-09 op #ifdef __linux__
93 f36fd90a 2022-07-09 op # define _DEFAULT_SOURCE
94 f36fd90a 2022-07-09 op #endif
95 f36fd90a 2022-07-09 op #include <endian.h>
96 f36fd90a 2022-07-09 op
97 f36fd90a 2022-07-09 op int
98 f36fd90a 2022-07-09 op main(void)
99 f36fd90a 2022-07-09 op {
100 f36fd90a 2022-07-09 op return !htole32(23);
101 f36fd90a 2022-07-09 op }
102 f36fd90a 2022-07-09 op #endif /* TEST_ENDIAN_H */
103 f36fd90a 2022-07-09 op #if TEST_ERR
104 f36fd90a 2022-07-09 op /*
105 f36fd90a 2022-07-09 op * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
106 f36fd90a 2022-07-09 op *
107 f36fd90a 2022-07-09 op * Permission to use, copy, modify, and distribute this software for any
108 f36fd90a 2022-07-09 op * purpose with or without fee is hereby granted, provided that the above
109 f36fd90a 2022-07-09 op * copyright notice and this permission notice appear in all copies.
110 f36fd90a 2022-07-09 op *
111 f36fd90a 2022-07-09 op * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
112 f36fd90a 2022-07-09 op * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
113 f36fd90a 2022-07-09 op * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
114 f36fd90a 2022-07-09 op * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
115 f36fd90a 2022-07-09 op * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
116 f36fd90a 2022-07-09 op * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
117 f36fd90a 2022-07-09 op * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
118 f36fd90a 2022-07-09 op */
119 f36fd90a 2022-07-09 op
120 f36fd90a 2022-07-09 op #include <err.h>
121 f36fd90a 2022-07-09 op #include <errno.h>
122 f36fd90a 2022-07-09 op
123 f36fd90a 2022-07-09 op int
124 f36fd90a 2022-07-09 op main(void)
125 f36fd90a 2022-07-09 op {
126 f36fd90a 2022-07-09 op warnx("%d. warnx", 1);
127 f36fd90a 2022-07-09 op warnc(ENOENT, "%d. warn", ENOENT);
128 f36fd90a 2022-07-09 op warn("%d. warn", 2);
129 f36fd90a 2022-07-09 op err(0, "%d. err", 3);
130 f36fd90a 2022-07-09 op errx(0, "%d. err", 3);
131 f36fd90a 2022-07-09 op errc(0, ENOENT, "%d. err", 3);
132 f36fd90a 2022-07-09 op /* NOTREACHED */
133 f36fd90a 2022-07-09 op return 1;
134 f36fd90a 2022-07-09 op }
135 f36fd90a 2022-07-09 op #endif /* TEST_ERR */
136 f36fd90a 2022-07-09 op #if TEST_EXPLICIT_BZERO
137 f36fd90a 2022-07-09 op #include <string.h>
138 f36fd90a 2022-07-09 op
139 f36fd90a 2022-07-09 op int
140 f36fd90a 2022-07-09 op main(void)
141 f36fd90a 2022-07-09 op {
142 f36fd90a 2022-07-09 op char foo[10];
143 f36fd90a 2022-07-09 op
144 f36fd90a 2022-07-09 op explicit_bzero(foo, sizeof(foo));
145 f36fd90a 2022-07-09 op return(0);
146 f36fd90a 2022-07-09 op }
147 f36fd90a 2022-07-09 op #endif /* TEST_EXPLICIT_BZERO */
148 f36fd90a 2022-07-09 op #if TEST_FLOCK
149 f36fd90a 2022-07-09 op #include <fcntl.h>
150 f36fd90a 2022-07-09 op
151 f36fd90a 2022-07-09 op int
152 f36fd90a 2022-07-09 op main(void)
153 f36fd90a 2022-07-09 op {
154 f36fd90a 2022-07-09 op flock(0, LOCK_SH|LOCK_NB);
155 f36fd90a 2022-07-09 op return 0;
156 f36fd90a 2022-07-09 op }
157 f36fd90a 2022-07-09 op #endif /* TEST_FLOCK */
158 f36fd90a 2022-07-09 op #if TEST_FREEZERO
159 f36fd90a 2022-07-09 op #include <stdlib.h>
160 f36fd90a 2022-07-09 op
161 f36fd90a 2022-07-09 op int
162 f36fd90a 2022-07-09 op main(void)
163 f36fd90a 2022-07-09 op {
164 f36fd90a 2022-07-09 op freezero(NULL, 0);
165 f36fd90a 2022-07-09 op return 0;
166 f36fd90a 2022-07-09 op }
167 f36fd90a 2022-07-09 op #endif /* TEST_FREEZERO */
168 f36fd90a 2022-07-09 op #if TEST_FTS
169 f36fd90a 2022-07-09 op #include <stddef.h>
170 f36fd90a 2022-07-09 op #include <sys/types.h>
171 f36fd90a 2022-07-09 op #include <sys/stat.h>
172 f36fd90a 2022-07-09 op #include <fts.h>
173 f36fd90a 2022-07-09 op
174 f36fd90a 2022-07-09 op int
175 f36fd90a 2022-07-09 op main(void)
176 f36fd90a 2022-07-09 op {
177 f36fd90a 2022-07-09 op const char *argv[2];
178 f36fd90a 2022-07-09 op FTS *ftsp;
179 f36fd90a 2022-07-09 op FTSENT *entry;
180 f36fd90a 2022-07-09 op
181 f36fd90a 2022-07-09 op argv[0] = ".";
182 f36fd90a 2022-07-09 op argv[1] = (char *)NULL;
183 f36fd90a 2022-07-09 op
184 f36fd90a 2022-07-09 op ftsp = fts_open((char * const *)argv,
185 f36fd90a 2022-07-09 op FTS_PHYSICAL | FTS_NOCHDIR, NULL);
186 f36fd90a 2022-07-09 op
187 f36fd90a 2022-07-09 op if (ftsp == NULL)
188 f36fd90a 2022-07-09 op return 1;
189 f36fd90a 2022-07-09 op
190 f36fd90a 2022-07-09 op entry = fts_read(ftsp);
191 f36fd90a 2022-07-09 op
192 f36fd90a 2022-07-09 op if (entry == NULL)
193 f36fd90a 2022-07-09 op return 1;
194 f36fd90a 2022-07-09 op
195 f36fd90a 2022-07-09 op if (fts_set(ftsp, entry, FTS_SKIP) != 0)
196 f36fd90a 2022-07-09 op return 1;
197 f36fd90a 2022-07-09 op
198 f36fd90a 2022-07-09 op if (fts_close(ftsp) != 0)
199 f36fd90a 2022-07-09 op return 1;
200 f36fd90a 2022-07-09 op
201 f36fd90a 2022-07-09 op return 0;
202 f36fd90a 2022-07-09 op }
203 f36fd90a 2022-07-09 op #endif /* TEST_FTS */
204 f26a3c73 2023-09-06 op #if TEST_GETDTABLECOUNT
205 f26a3c73 2023-09-06 op #include <unistd.h>
206 f26a3c73 2023-09-06 op
207 f26a3c73 2023-09-06 op int
208 f26a3c73 2023-09-06 op main(void)
209 f26a3c73 2023-09-06 op {
210 f26a3c73 2023-09-06 op return getdtablecount();
211 f26a3c73 2023-09-06 op }
212 f26a3c73 2023-09-06 op #endif /* TEST_GETDTABLECOUNT */
213 4e457e62 2023-12-10 op #if TEST_GETDTABLESIZE
214 4e457e62 2023-12-10 op #include <unistd.h>
215 4e457e62 2023-12-10 op
216 4e457e62 2023-12-10 op int
217 4e457e62 2023-12-10 op main(void)
218 4e457e62 2023-12-10 op {
219 4e457e62 2023-12-10 op return getdtablesize();
220 4e457e62 2023-12-10 op }
221 4e457e62 2023-12-10 op #endif /* TEST_GETDTABLESIZE */
222 f36fd90a 2022-07-09 op #if TEST_GETEXECNAME
223 f36fd90a 2022-07-09 op #include <stdlib.h>
224 f36fd90a 2022-07-09 op
225 f36fd90a 2022-07-09 op int
226 f36fd90a 2022-07-09 op main(void)
227 f36fd90a 2022-07-09 op {
228 f36fd90a 2022-07-09 op const char * progname;
229 f36fd90a 2022-07-09 op
230 f36fd90a 2022-07-09 op progname = getexecname();
231 f36fd90a 2022-07-09 op return progname == NULL;
232 f36fd90a 2022-07-09 op }
233 f36fd90a 2022-07-09 op #endif /* TEST_GETEXECNAME */
234 f36fd90a 2022-07-09 op #if TEST_GETPROGNAME
235 f36fd90a 2022-07-09 op #include <stdlib.h>
236 f36fd90a 2022-07-09 op
237 f36fd90a 2022-07-09 op int
238 f36fd90a 2022-07-09 op main(void)
239 f36fd90a 2022-07-09 op {
240 f36fd90a 2022-07-09 op const char * progname;
241 f36fd90a 2022-07-09 op
242 f36fd90a 2022-07-09 op progname = getprogname();
243 f36fd90a 2022-07-09 op return progname == NULL;
244 f36fd90a 2022-07-09 op }
245 f36fd90a 2022-07-09 op #endif /* TEST_GETPROGNAME */
246 82556d5b 2023-09-07 op #if TEST_LIB_IMSG
247 f36fd90a 2022-07-09 op #include <sys/types.h>
248 f36fd90a 2022-07-09 op #include <sys/queue.h>
249 f36fd90a 2022-07-09 op #include <sys/uio.h>
250 f36fd90a 2022-07-09 op #include <stdint.h>
251 f36fd90a 2022-07-09 op #include <imsg.h>
252 f36fd90a 2022-07-09 op
253 f36fd90a 2022-07-09 op int
254 f36fd90a 2022-07-09 op main(void)
255 f36fd90a 2022-07-09 op {
256 119ab664 2024-01-21 op struct imsgbuf imsgbuf;
257 119ab664 2024-01-21 op struct imsg imsg;
258 f36fd90a 2022-07-09 op
259 119ab664 2024-01-21 op imsg_init(&imsgbuf, 3);
260 119ab664 2024-01-21 op imsg_clear(&imsgbuf);
261 119ab664 2024-01-21 op imsg_get_fd(&imsg);
262 f36fd90a 2022-07-09 op return 0;
263 f36fd90a 2022-07-09 op }
264 82556d5b 2023-09-07 op #endif /* TEST_LIB_IMSG */
265 f36fd90a 2022-07-09 op #if TEST_INFTIM
266 f36fd90a 2022-07-09 op /*
267 f36fd90a 2022-07-09 op * Linux doesn't (always?) have this.
268 f36fd90a 2022-07-09 op */
269 f36fd90a 2022-07-09 op
270 f36fd90a 2022-07-09 op #include <poll.h>
271 f36fd90a 2022-07-09 op #include <stdio.h>
272 f36fd90a 2022-07-09 op
273 f36fd90a 2022-07-09 op int
274 f36fd90a 2022-07-09 op main(void)
275 f36fd90a 2022-07-09 op {
276 f36fd90a 2022-07-09 op printf("INFTIM is defined to be %ld\n", (long)INFTIM);
277 f36fd90a 2022-07-09 op return 0;
278 f36fd90a 2022-07-09 op }
279 f36fd90a 2022-07-09 op #endif /* TEST_INFTIM */
280 f36fd90a 2022-07-09 op #if TEST_LANDLOCK
281 f36fd90a 2022-07-09 op #include <linux/landlock.h>
282 f36fd90a 2022-07-09 op #include <stdlib.h>
283 f36fd90a 2022-07-09 op #include <sys/prctl.h>
284 f36fd90a 2022-07-09 op #include <sys/syscall.h>
285 f36fd90a 2022-07-09 op #include <unistd.h>
286 f36fd90a 2022-07-09 op #include <stdint.h>
287 f36fd90a 2022-07-09 op
288 f36fd90a 2022-07-09 op #ifndef landlock_create_ruleset
289 f36fd90a 2022-07-09 op static inline int landlock_create_ruleset(const struct landlock_ruleset_attr *const attr,
290 f36fd90a 2022-07-09 op const size_t size, const __u32 flags)
291 f36fd90a 2022-07-09 op {
292 f36fd90a 2022-07-09 op return syscall(__NR_landlock_create_ruleset, attr, size, flags);
293 f36fd90a 2022-07-09 op }
294 f36fd90a 2022-07-09 op #endif
295 f36fd90a 2022-07-09 op
296 f36fd90a 2022-07-09 op #ifndef landlock_restrict_self
297 f36fd90a 2022-07-09 op static inline int landlock_restrict_self(const int ruleset_fd,
298 f36fd90a 2022-07-09 op const __u32 flags)
299 f36fd90a 2022-07-09 op {
300 f36fd90a 2022-07-09 op return syscall(__NR_landlock_restrict_self, ruleset_fd, flags);
301 f36fd90a 2022-07-09 op }
302 f36fd90a 2022-07-09 op #endif
303 f36fd90a 2022-07-09 op
304 f36fd90a 2022-07-09 op int
305 f36fd90a 2022-07-09 op main(void)
306 f36fd90a 2022-07-09 op {
307 f36fd90a 2022-07-09 op uint64_t mask = LANDLOCK_ACCESS_FS_READ_FILE | LANDLOCK_ACCESS_FS_WRITE_FILE;
308 f36fd90a 2022-07-09 op struct landlock_ruleset_attr rules = {
309 f36fd90a 2022-07-09 op .handled_access_fs = mask
310 f36fd90a 2022-07-09 op };
311 f36fd90a 2022-07-09 op int fd = landlock_create_ruleset(&rules, sizeof(rules), 0);
312 f36fd90a 2022-07-09 op
313 f36fd90a 2022-07-09 op if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0))
314 f36fd90a 2022-07-09 op return 1;
315 f36fd90a 2022-07-09 op return landlock_restrict_self(fd, 0) ? 1 : 0;
316 f36fd90a 2022-07-09 op }
317 f36fd90a 2022-07-09 op #endif /* TEST_LANDLOCK */
318 f36fd90a 2022-07-09 op #if TEST_LIB_SOCKET
319 f36fd90a 2022-07-09 op #include <sys/socket.h>
320 f36fd90a 2022-07-09 op
321 f36fd90a 2022-07-09 op int
322 f36fd90a 2022-07-09 op main(void)
323 f36fd90a 2022-07-09 op {
324 f36fd90a 2022-07-09 op int fds[2], c;
325 f36fd90a 2022-07-09 op
326 f36fd90a 2022-07-09 op c = socketpair(AF_UNIX, SOCK_STREAM, 0, fds);
327 f36fd90a 2022-07-09 op return c == -1;
328 f36fd90a 2022-07-09 op }
329 f36fd90a 2022-07-09 op #endif /* TEST_LIB_SOCKET */
330 f36fd90a 2022-07-09 op #if TEST_MD5
331 f36fd90a 2022-07-09 op #include <sys/types.h>
332 f36fd90a 2022-07-09 op #include <md5.h>
333 f36fd90a 2022-07-09 op
334 f36fd90a 2022-07-09 op int main(void)
335 f36fd90a 2022-07-09 op {
336 f36fd90a 2022-07-09 op MD5_CTX ctx;
337 f36fd90a 2022-07-09 op char result[MD5_DIGEST_STRING_LENGTH];
338 f36fd90a 2022-07-09 op
339 f36fd90a 2022-07-09 op MD5Init(&ctx);
340 f36fd90a 2022-07-09 op MD5Update(&ctx, (const unsigned char *)"abcd", 4);
341 f36fd90a 2022-07-09 op MD5End(&ctx, result);
342 f36fd90a 2022-07-09 op
343 f36fd90a 2022-07-09 op return 0;
344 f36fd90a 2022-07-09 op }
345 f36fd90a 2022-07-09 op #endif /* TEST_MD5 */
346 f36fd90a 2022-07-09 op #if TEST_MEMMEM
347 f36fd90a 2022-07-09 op #define _GNU_SOURCE
348 f36fd90a 2022-07-09 op #include <string.h>
349 f36fd90a 2022-07-09 op
350 f36fd90a 2022-07-09 op int
351 f36fd90a 2022-07-09 op main(void)
352 f36fd90a 2022-07-09 op {
353 f36fd90a 2022-07-09 op char *a = memmem("hello, world", strlen("hello, world"), "world", strlen("world"));
354 f36fd90a 2022-07-09 op return(NULL == a);
355 f36fd90a 2022-07-09 op }
356 f36fd90a 2022-07-09 op #endif /* TEST_MEMMEM */
357 f36fd90a 2022-07-09 op #if TEST_MEMRCHR
358 f36fd90a 2022-07-09 op #if defined(__linux__) || defined(__MINT__)
359 f36fd90a 2022-07-09 op #define _GNU_SOURCE /* See test-*.c what needs this. */
360 f36fd90a 2022-07-09 op #endif
361 f36fd90a 2022-07-09 op #include <string.h>
362 f36fd90a 2022-07-09 op
363 f36fd90a 2022-07-09 op int
364 f36fd90a 2022-07-09 op main(void)
365 f36fd90a 2022-07-09 op {
366 f36fd90a 2022-07-09 op const char *buf = "abcdef";
367 f36fd90a 2022-07-09 op void *res;
368 f36fd90a 2022-07-09 op
369 f36fd90a 2022-07-09 op res = memrchr(buf, 'a', strlen(buf));
370 f36fd90a 2022-07-09 op return(NULL == res ? 1 : 0);
371 f36fd90a 2022-07-09 op }
372 f36fd90a 2022-07-09 op #endif /* TEST_MEMRCHR */
373 f36fd90a 2022-07-09 op #if TEST_MEMSET_S
374 f36fd90a 2022-07-09 op #include <string.h>
375 f36fd90a 2022-07-09 op
376 f36fd90a 2022-07-09 op int main(void)
377 f36fd90a 2022-07-09 op {
378 f36fd90a 2022-07-09 op char buf[10];
379 f36fd90a 2022-07-09 op memset_s(buf, 0, 'c', sizeof(buf));
380 f36fd90a 2022-07-09 op return 0;
381 f36fd90a 2022-07-09 op }
382 f36fd90a 2022-07-09 op #endif /* TEST_MEMSET_S */
383 f36fd90a 2022-07-09 op #if TEST_MKFIFOAT
384 f36fd90a 2022-07-09 op #include <sys/stat.h>
385 f36fd90a 2022-07-09 op #include <fcntl.h>
386 f36fd90a 2022-07-09 op
387 f36fd90a 2022-07-09 op int main(void) {
388 f36fd90a 2022-07-09 op mkfifoat(AT_FDCWD, "this/path/should/not/exist", 0600);
389 f36fd90a 2022-07-09 op return 0;
390 f36fd90a 2022-07-09 op }
391 f36fd90a 2022-07-09 op #endif /* TEST_MKFIFOAT */
392 f36fd90a 2022-07-09 op #if TEST_MKNODAT
393 f36fd90a 2022-07-09 op #include <sys/stat.h>
394 f36fd90a 2022-07-09 op #include <fcntl.h>
395 f36fd90a 2022-07-09 op
396 f36fd90a 2022-07-09 op int main(void) {
397 f36fd90a 2022-07-09 op mknodat(AT_FDCWD, "this/path/should/not/exist", S_IFIFO | 0600, 0);
398 f36fd90a 2022-07-09 op return 0;
399 f36fd90a 2022-07-09 op }
400 f36fd90a 2022-07-09 op #endif /* TEST_MKNODAT */
401 f36fd90a 2022-07-09 op #if TEST_OPTRESET
402 f36fd90a 2022-07-09 op #include <unistd.h>
403 f36fd90a 2022-07-09 op
404 f36fd90a 2022-07-09 op int
405 f36fd90a 2022-07-09 op main(int argc, char **argv)
406 f36fd90a 2022-07-09 op {
407 f36fd90a 2022-07-09 op optreset = 1;
408 f36fd90a 2022-07-09 op getopt(argc, argv, "");
409 f36fd90a 2022-07-09 op return 0;
410 f36fd90a 2022-07-09 op }
411 f36fd90a 2022-07-09 op #endif /* TEST_OPTRESET */
412 f36fd90a 2022-07-09 op #if TEST_OSBYTEORDER_H
413 f36fd90a 2022-07-09 op #include <libkern/OSByteOrder.h>
414 f36fd90a 2022-07-09 op
415 f36fd90a 2022-07-09 op int
416 f36fd90a 2022-07-09 op main(void)
417 f36fd90a 2022-07-09 op {
418 f36fd90a 2022-07-09 op return !OSSwapHostToLittleInt32(23);
419 f36fd90a 2022-07-09 op }
420 f36fd90a 2022-07-09 op #endif /* TEST_OSBYTEORDER_H */
421 f36fd90a 2022-07-09 op #if TEST_PATH_MAX
422 f36fd90a 2022-07-09 op /*
423 f36fd90a 2022-07-09 op * POSIX allows PATH_MAX to not be defined, see
424 f36fd90a 2022-07-09 op * http://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html;
425 f36fd90a 2022-07-09 op * the GNU Hurd is an example of a system not having it.
426 f36fd90a 2022-07-09 op *
427 f36fd90a 2022-07-09 op * Arguably, it would be better to test sysconf(_SC_PATH_MAX),
428 f36fd90a 2022-07-09 op * but since the individual *.c files include "config.h" before
429 f36fd90a 2022-07-09 op * <limits.h>, overriding an excessive value of PATH_MAX from
430 f36fd90a 2022-07-09 op * "config.h" is impossible anyway, so for now, the simplest
431 f36fd90a 2022-07-09 op * fix is to provide a value only on systems not having any.
432 f36fd90a 2022-07-09 op * So far, we encountered no system defining PATH_MAX to an
433 f36fd90a 2022-07-09 op * impractically large value, even though POSIX explicitly
434 f36fd90a 2022-07-09 op * allows that.
435 f36fd90a 2022-07-09 op *
436 f36fd90a 2022-07-09 op * The real fix would be to replace all static buffers of size
437 f36fd90a 2022-07-09 op * PATH_MAX by dynamically allocated buffers. But that is
438 f36fd90a 2022-07-09 op * somewhat intrusive because it touches several files and
439 f36fd90a 2022-07-09 op * because it requires changing struct mlink in mandocdb.c.
440 f36fd90a 2022-07-09 op * So i'm postponing that for now.
441 f36fd90a 2022-07-09 op */
442 f36fd90a 2022-07-09 op
443 f36fd90a 2022-07-09 op #include <limits.h>
444 f36fd90a 2022-07-09 op #include <stdio.h>
445 f36fd90a 2022-07-09 op
446 f36fd90a 2022-07-09 op int
447 f36fd90a 2022-07-09 op main(void)
448 f36fd90a 2022-07-09 op {
449 f36fd90a 2022-07-09 op printf("PATH_MAX is defined to be %ld\n", (long)PATH_MAX);
450 f36fd90a 2022-07-09 op return 0;
451 f36fd90a 2022-07-09 op }
452 f36fd90a 2022-07-09 op #endif /* TEST_PATH_MAX */
453 f36fd90a 2022-07-09 op #if TEST_PLEDGE
454 f36fd90a 2022-07-09 op #include <unistd.h>
455 f36fd90a 2022-07-09 op
456 f36fd90a 2022-07-09 op int
457 f36fd90a 2022-07-09 op main(void)
458 f36fd90a 2022-07-09 op {
459 f36fd90a 2022-07-09 op return !!pledge("stdio", NULL);
460 f36fd90a 2022-07-09 op }
461 f36fd90a 2022-07-09 op #endif /* TEST_PLEDGE */
462 f36fd90a 2022-07-09 op #if TEST_PROGRAM_INVOCATION_SHORT_NAME
463 f36fd90a 2022-07-09 op #define _GNU_SOURCE /* See feature_test_macros(7) */
464 f36fd90a 2022-07-09 op #include <errno.h>
465 f36fd90a 2022-07-09 op
466 f36fd90a 2022-07-09 op int
467 f36fd90a 2022-07-09 op main(void)
468 f36fd90a 2022-07-09 op {
469 f36fd90a 2022-07-09 op
470 f36fd90a 2022-07-09 op return !program_invocation_short_name;
471 f36fd90a 2022-07-09 op }
472 f36fd90a 2022-07-09 op #endif /* TEST_PROGRAM_INVOCATION_SHORT_NAME */
473 f36fd90a 2022-07-09 op #if TEST_PR_SET_NAME
474 f36fd90a 2022-07-09 op #include <sys/prctl.h>
475 f36fd90a 2022-07-09 op
476 f36fd90a 2022-07-09 op int
477 f36fd90a 2022-07-09 op main(void)
478 f36fd90a 2022-07-09 op {
479 f36fd90a 2022-07-09 op prctl(PR_SET_NAME, "foo");
480 f36fd90a 2022-07-09 op return 0;
481 f36fd90a 2022-07-09 op }
482 f36fd90a 2022-07-09 op #endif /* TEST_PR_SET_NAME */
483 f36fd90a 2022-07-09 op #if TEST_READPASSPHRASE
484 f36fd90a 2022-07-09 op #include <stddef.h>
485 f36fd90a 2022-07-09 op #include <readpassphrase.h>
486 f36fd90a 2022-07-09 op
487 f36fd90a 2022-07-09 op int
488 f36fd90a 2022-07-09 op main(void)
489 f36fd90a 2022-07-09 op {
490 f36fd90a 2022-07-09 op return !!readpassphrase("prompt: ", NULL, 0, 0);
491 f36fd90a 2022-07-09 op }
492 f36fd90a 2022-07-09 op #endif /* TEST_READPASSPHRASE */
493 f36fd90a 2022-07-09 op #if TEST_REALLOCARRAY
494 f36fd90a 2022-07-09 op #ifdef __NetBSD__
495 f36fd90a 2022-07-09 op # define _OPENBSD_SOURCE
496 f36fd90a 2022-07-09 op #endif
497 f36fd90a 2022-07-09 op #include <stdlib.h>
498 f36fd90a 2022-07-09 op
499 f36fd90a 2022-07-09 op int
500 f36fd90a 2022-07-09 op main(void)
501 f36fd90a 2022-07-09 op {
502 f36fd90a 2022-07-09 op return !reallocarray(NULL, 2, 2);
503 f36fd90a 2022-07-09 op }
504 f36fd90a 2022-07-09 op #endif /* TEST_REALLOCARRAY */
505 f36fd90a 2022-07-09 op #if TEST_RECALLOCARRAY
506 f36fd90a 2022-07-09 op #include <stdlib.h>
507 f36fd90a 2022-07-09 op
508 f36fd90a 2022-07-09 op int
509 f36fd90a 2022-07-09 op main(void)
510 f36fd90a 2022-07-09 op {
511 f36fd90a 2022-07-09 op return !recallocarray(NULL, 0, 2, 2);
512 f36fd90a 2022-07-09 op }
513 f36fd90a 2022-07-09 op #endif /* TEST_RECALLOCARRAY */
514 f36fd90a 2022-07-09 op #if TEST_SANDBOX_INIT
515 f36fd90a 2022-07-09 op #include <sandbox.h>
516 f36fd90a 2022-07-09 op
517 f36fd90a 2022-07-09 op int
518 f36fd90a 2022-07-09 op main(void)
519 f36fd90a 2022-07-09 op {
520 f36fd90a 2022-07-09 op char *ep;
521 f36fd90a 2022-07-09 op int rc;
522 f36fd90a 2022-07-09 op
523 f36fd90a 2022-07-09 op rc = sandbox_init(kSBXProfileNoInternet, SANDBOX_NAMED, &ep);
524 f36fd90a 2022-07-09 op if (-1 == rc)
525 f36fd90a 2022-07-09 op sandbox_free_error(ep);
526 f36fd90a 2022-07-09 op return(-1 == rc);
527 f36fd90a 2022-07-09 op }
528 f36fd90a 2022-07-09 op #endif /* TEST_SANDBOX_INIT */
529 f36fd90a 2022-07-09 op #if TEST_SETPROCTITLE
530 f36fd90a 2022-07-09 op #include <stdlib.h>
531 f36fd90a 2022-07-09 op
532 f36fd90a 2022-07-09 op int
533 f36fd90a 2022-07-09 op main(void)
534 f36fd90a 2022-07-09 op {
535 f36fd90a 2022-07-09 op setproctitle("#%d test program", 7);
536 f36fd90a 2022-07-09 op return 0;
537 f36fd90a 2022-07-09 op }
538 f36fd90a 2022-07-09 op #endif
539 f36fd90a 2022-07-09 op #if TEST_SIO_FLUSH
540 f36fd90a 2022-07-09 op #include <sndio.h>
541 f36fd90a 2022-07-09 op
542 f36fd90a 2022-07-09 op int
543 f36fd90a 2022-07-09 op main(void)
544 f36fd90a 2022-07-09 op {
545 f36fd90a 2022-07-09 op struct sio_hdl *hdl;
546 f36fd90a 2022-07-09 op hdl = sio_open(SIO_DEVANY, SIO_PLAY, 1);
547 f36fd90a 2022-07-09 op sio_flush(hdl);
548 f36fd90a 2022-07-09 op sio_close(hdl);
549 f9756af5 2022-07-21 op return 0;
550 f36fd90a 2022-07-09 op }
551 f36fd90a 2022-07-09 op #endif /* TEST_SIO_FLUSH */
552 f36fd90a 2022-07-09 op #if TEST_SCAN_SCALED
553 f36fd90a 2022-07-09 op #include <util.h>
554 f36fd90a 2022-07-09 op
555 f36fd90a 2022-07-09 op int
556 f36fd90a 2022-07-09 op main(void)
557 f36fd90a 2022-07-09 op {
558 f36fd90a 2022-07-09 op char *cinput = (char *)"1.5K", buf[FMT_SCALED_STRSIZE];
559 f36fd90a 2022-07-09 op long long ninput = 10483892, result;
560 f36fd90a 2022-07-09 op return scan_scaled(cinput, &result) == 0;
561 f36fd90a 2022-07-09 op }
562 f36fd90a 2022-07-09 op #endif /* TEST_SCAN_SCALED */
563 f36fd90a 2022-07-09 op #if TEST_SECCOMP_FILTER
564 f36fd90a 2022-07-09 op #include <sys/prctl.h>
565 f36fd90a 2022-07-09 op #include <linux/seccomp.h>
566 f36fd90a 2022-07-09 op #include <errno.h>
567 f36fd90a 2022-07-09 op
568 f36fd90a 2022-07-09 op int
569 f36fd90a 2022-07-09 op main(void)
570 f36fd90a 2022-07-09 op {
571 f36fd90a 2022-07-09 op
572 f36fd90a 2022-07-09 op prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, 0);
573 f36fd90a 2022-07-09 op return(EFAULT == errno ? 0 : 1);
574 f36fd90a 2022-07-09 op }
575 f36fd90a 2022-07-09 op #endif /* TEST_SECCOMP_FILTER */
576 f36fd90a 2022-07-09 op #if TEST_SETRESGID
577 f36fd90a 2022-07-09 op #define _GNU_SOURCE /* linux */
578 f36fd90a 2022-07-09 op #include <sys/types.h>
579 f36fd90a 2022-07-09 op #include <unistd.h>
580 f36fd90a 2022-07-09 op
581 f36fd90a 2022-07-09 op int
582 f36fd90a 2022-07-09 op main(void)
583 f36fd90a 2022-07-09 op {
584 f36fd90a 2022-07-09 op return setresgid(-1, -1, -1) == -1;
585 f36fd90a 2022-07-09 op }
586 f36fd90a 2022-07-09 op #endif /* TEST_SETRESGID */
587 f36fd90a 2022-07-09 op #if TEST_SETRESUID
588 f36fd90a 2022-07-09 op #define _GNU_SOURCE /* linux */
589 f36fd90a 2022-07-09 op #include <sys/types.h>
590 f36fd90a 2022-07-09 op #include <unistd.h>
591 f36fd90a 2022-07-09 op
592 f36fd90a 2022-07-09 op int
593 f36fd90a 2022-07-09 op main(void)
594 f36fd90a 2022-07-09 op {
595 f36fd90a 2022-07-09 op return setresuid(-1, -1, -1) == -1;
596 f36fd90a 2022-07-09 op }
597 f36fd90a 2022-07-09 op #endif /* TEST_SETRESUID */
598 f36fd90a 2022-07-09 op #if TEST_SHA2
599 f36fd90a 2022-07-09 op #include <sys/types.h>
600 f36fd90a 2022-07-09 op #include <sha2.h>
601 f36fd90a 2022-07-09 op
602 f36fd90a 2022-07-09 op int main(void)
603 f36fd90a 2022-07-09 op {
604 f36fd90a 2022-07-09 op SHA2_CTX ctx;
605 f36fd90a 2022-07-09 op char result[SHA256_DIGEST_STRING_LENGTH];
606 f36fd90a 2022-07-09 op
607 f36fd90a 2022-07-09 op SHA256Init(&ctx);
608 f36fd90a 2022-07-09 op SHA256Update(&ctx, (const unsigned char *)"abcd", 4);
609 f36fd90a 2022-07-09 op SHA256End(&ctx, result);
610 f36fd90a 2022-07-09 op
611 f36fd90a 2022-07-09 op return 0;
612 f36fd90a 2022-07-09 op }
613 f36fd90a 2022-07-09 op #endif /* TEST_SHA2 */
614 f36fd90a 2022-07-09 op #if TEST_SOCK_NONBLOCK
615 f36fd90a 2022-07-09 op /*
616 f36fd90a 2022-07-09 op * Linux doesn't (always?) have this.
617 f36fd90a 2022-07-09 op */
618 f36fd90a 2022-07-09 op
619 f36fd90a 2022-07-09 op #include <sys/socket.h>
620 f36fd90a 2022-07-09 op
621 f36fd90a 2022-07-09 op int
622 f36fd90a 2022-07-09 op main(void)
623 f36fd90a 2022-07-09 op {
624 f36fd90a 2022-07-09 op int fd[2];
625 f36fd90a 2022-07-09 op socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK, 0, fd);
626 f36fd90a 2022-07-09 op return 0;
627 f36fd90a 2022-07-09 op }
628 f36fd90a 2022-07-09 op #endif /* TEST_SOCK_NONBLOCK */
629 f36fd90a 2022-07-09 op #if TEST_STATIC
630 f36fd90a 2022-07-09 op int
631 f36fd90a 2022-07-09 op main(void)
632 f36fd90a 2022-07-09 op {
633 f36fd90a 2022-07-09 op return 0; /* not meant to do anything */
634 f36fd90a 2022-07-09 op }
635 f36fd90a 2022-07-09 op #endif /* TEST_STATIC */
636 f36fd90a 2022-07-09 op #if TEST_STRLCAT
637 f36fd90a 2022-07-09 op #include <string.h>
638 f36fd90a 2022-07-09 op
639 f36fd90a 2022-07-09 op int
640 f36fd90a 2022-07-09 op main(void)
641 f36fd90a 2022-07-09 op {
642 f36fd90a 2022-07-09 op char buf[3] = "a";
643 f36fd90a 2022-07-09 op return ! (strlcat(buf, "b", sizeof(buf)) == 2 &&
644 f36fd90a 2022-07-09 op buf[0] == 'a' && buf[1] == 'b' && buf[2] == '\0');
645 f36fd90a 2022-07-09 op }
646 f36fd90a 2022-07-09 op #endif /* TEST_STRLCAT */
647 f36fd90a 2022-07-09 op #if TEST_STRLCPY
648 f36fd90a 2022-07-09 op #include <string.h>
649 f36fd90a 2022-07-09 op
650 f36fd90a 2022-07-09 op int
651 f36fd90a 2022-07-09 op main(void)
652 f36fd90a 2022-07-09 op {
653 f36fd90a 2022-07-09 op char buf[2] = "";
654 f36fd90a 2022-07-09 op return ! (strlcpy(buf, "a", sizeof(buf)) == 1 &&
655 f36fd90a 2022-07-09 op buf[0] == 'a' && buf[1] == '\0');
656 f36fd90a 2022-07-09 op }
657 f36fd90a 2022-07-09 op #endif /* TEST_STRLCPY */
658 f36fd90a 2022-07-09 op #if TEST_STRNDUP
659 f36fd90a 2022-07-09 op #include <string.h>
660 f36fd90a 2022-07-09 op
661 f36fd90a 2022-07-09 op int
662 f36fd90a 2022-07-09 op main(void)
663 f36fd90a 2022-07-09 op {
664 f36fd90a 2022-07-09 op const char *foo = "bar";
665 f36fd90a 2022-07-09 op char *baz;
666 f36fd90a 2022-07-09 op
667 f36fd90a 2022-07-09 op baz = strndup(foo, 1);
668 f36fd90a 2022-07-09 op return(0 != strcmp(baz, "b"));
669 f36fd90a 2022-07-09 op }
670 f36fd90a 2022-07-09 op #endif /* TEST_STRNDUP */
671 f36fd90a 2022-07-09 op #if TEST_STRNLEN
672 f36fd90a 2022-07-09 op #include <string.h>
673 f36fd90a 2022-07-09 op
674 f36fd90a 2022-07-09 op int
675 f36fd90a 2022-07-09 op main(void)
676 f36fd90a 2022-07-09 op {
677 f36fd90a 2022-07-09 op const char *foo = "bar";
678 f36fd90a 2022-07-09 op size_t sz;
679 f36fd90a 2022-07-09 op
680 f36fd90a 2022-07-09 op sz = strnlen(foo, 1);
681 f36fd90a 2022-07-09 op return(1 != sz);
682 f36fd90a 2022-07-09 op }
683 f36fd90a 2022-07-09 op #endif /* TEST_STRNLEN */
684 f36fd90a 2022-07-09 op #if TEST_STRTONUM
685 f36fd90a 2022-07-09 op /*
686 f36fd90a 2022-07-09 op * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
687 f36fd90a 2022-07-09 op *
688 f36fd90a 2022-07-09 op * Permission to use, copy, modify, and distribute this software for any
689 f36fd90a 2022-07-09 op * purpose with or without fee is hereby granted, provided that the above
690 f36fd90a 2022-07-09 op * copyright notice and this permission notice appear in all copies.
691 f36fd90a 2022-07-09 op *
692 f36fd90a 2022-07-09 op * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
693 f36fd90a 2022-07-09 op * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
694 f36fd90a 2022-07-09 op * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
695 f36fd90a 2022-07-09 op * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
696 f36fd90a 2022-07-09 op * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
697 f36fd90a 2022-07-09 op * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
698 f36fd90a 2022-07-09 op * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
699 f36fd90a 2022-07-09 op */
700 f36fd90a 2022-07-09 op #ifdef __NetBSD__
701 f36fd90a 2022-07-09 op # define _OPENBSD_SOURCE
702 f36fd90a 2022-07-09 op #endif
703 f36fd90a 2022-07-09 op #include <stdlib.h>
704 f36fd90a 2022-07-09 op
705 f36fd90a 2022-07-09 op int
706 f36fd90a 2022-07-09 op main(void)
707 f36fd90a 2022-07-09 op {
708 f36fd90a 2022-07-09 op const char *errstr;
709 f36fd90a 2022-07-09 op
710 f36fd90a 2022-07-09 op if (strtonum("1", 0, 2, &errstr) != 1)
711 f36fd90a 2022-07-09 op return 1;
712 f36fd90a 2022-07-09 op if (errstr != NULL)
713 f36fd90a 2022-07-09 op return 2;
714 f36fd90a 2022-07-09 op if (strtonum("1x", 0, 2, &errstr) != 0)
715 f36fd90a 2022-07-09 op return 3;
716 f36fd90a 2022-07-09 op if (errstr == NULL)
717 f36fd90a 2022-07-09 op return 4;
718 f36fd90a 2022-07-09 op if (strtonum("2", 0, 1, &errstr) != 0)
719 f36fd90a 2022-07-09 op return 5;
720 f36fd90a 2022-07-09 op if (errstr == NULL)
721 f36fd90a 2022-07-09 op return 6;
722 f36fd90a 2022-07-09 op if (strtonum("0", 1, 2, &errstr) != 0)
723 f36fd90a 2022-07-09 op return 7;
724 f36fd90a 2022-07-09 op if (errstr == NULL)
725 f36fd90a 2022-07-09 op return 8;
726 f36fd90a 2022-07-09 op return 0;
727 f36fd90a 2022-07-09 op }
728 f36fd90a 2022-07-09 op #endif /* TEST_STRTONUM */
729 f36fd90a 2022-07-09 op #if TEST_SYS_BYTEORDER_H
730 f36fd90a 2022-07-09 op #include <sys/byteorder.h>
731 f36fd90a 2022-07-09 op
732 f36fd90a 2022-07-09 op int
733 f36fd90a 2022-07-09 op main(void)
734 f36fd90a 2022-07-09 op {
735 f36fd90a 2022-07-09 op return !LE_32(23);
736 f36fd90a 2022-07-09 op }
737 f36fd90a 2022-07-09 op #endif /* TEST_SYS_BYTEORDER_H */
738 f36fd90a 2022-07-09 op #if TEST_SYS_ENDIAN_H
739 f36fd90a 2022-07-09 op #include <sys/endian.h>
740 f36fd90a 2022-07-09 op
741 f36fd90a 2022-07-09 op int
742 f36fd90a 2022-07-09 op main(void)
743 f36fd90a 2022-07-09 op {
744 f36fd90a 2022-07-09 op return !htole32(23);
745 f36fd90a 2022-07-09 op }
746 f36fd90a 2022-07-09 op #endif /* TEST_SYS_ENDIAN_H */
747 f36fd90a 2022-07-09 op #if TEST_SYS_MKDEV_H
748 f36fd90a 2022-07-09 op #include <sys/types.h>
749 f36fd90a 2022-07-09 op #include <sys/mkdev.h>
750 f36fd90a 2022-07-09 op
751 f36fd90a 2022-07-09 op int
752 f36fd90a 2022-07-09 op main(void)
753 f36fd90a 2022-07-09 op {
754 f36fd90a 2022-07-09 op return !minor(0);
755 f36fd90a 2022-07-09 op }
756 f36fd90a 2022-07-09 op #endif /* TEST_SYS_MKDEV_H */
757 f36fd90a 2022-07-09 op #if TEST_SYS_FILE
758 f36fd90a 2022-07-09 op #include <sys/file.h>
759 f36fd90a 2022-07-09 op
760 f36fd90a 2022-07-09 op int
761 f36fd90a 2022-07-09 op main(void)
762 f36fd90a 2022-07-09 op {
763 f36fd90a 2022-07-09 op flock(0, LOCK_SH|LOCK_NB);
764 f36fd90a 2022-07-09 op return 0;
765 f36fd90a 2022-07-09 op }
766 f36fd90a 2022-07-09 op #endif /* TEST_SYS_FILE */
767 f36fd90a 2022-07-09 op #if TEST_SYS_QUEUE
768 f36fd90a 2022-07-09 op #include <sys/queue.h>
769 f36fd90a 2022-07-09 op #include <stddef.h>
770 f36fd90a 2022-07-09 op
771 f36fd90a 2022-07-09 op struct foo {
772 f36fd90a 2022-07-09 op int bar;
773 f36fd90a 2022-07-09 op TAILQ_ENTRY(foo) entries;
774 f36fd90a 2022-07-09 op };
775 f36fd90a 2022-07-09 op
776 f36fd90a 2022-07-09 op TAILQ_HEAD(fooq, foo);
777 f36fd90a 2022-07-09 op
778 f36fd90a 2022-07-09 op int
779 f36fd90a 2022-07-09 op main(void)
780 f36fd90a 2022-07-09 op {
781 f36fd90a 2022-07-09 op struct fooq foo_q, bar_q;
782 f36fd90a 2022-07-09 op struct foo *p, *tmp;
783 f36fd90a 2022-07-09 op int i = 0;
784 f36fd90a 2022-07-09 op
785 f36fd90a 2022-07-09 op TAILQ_INIT(&foo_q);
786 f36fd90a 2022-07-09 op TAILQ_INIT(&bar_q);
787 f36fd90a 2022-07-09 op
788 f36fd90a 2022-07-09 op /*
789 f36fd90a 2022-07-09 op * Use TAILQ_FOREACH_SAFE because some systems (e.g., Linux)
790 f36fd90a 2022-07-09 op * have TAILQ_FOREACH but not the safe variant.
791 f36fd90a 2022-07-09 op */
792 f36fd90a 2022-07-09 op
793 f36fd90a 2022-07-09 op TAILQ_FOREACH_SAFE(p, &foo_q, entries, tmp)
794 f36fd90a 2022-07-09 op p->bar = i++;
795 f36fd90a 2022-07-09 op
796 f36fd90a 2022-07-09 op /* Test for newer macros as well. */
797 f36fd90a 2022-07-09 op
798 f36fd90a 2022-07-09 op TAILQ_CONCAT(&foo_q, &bar_q, entries);
799 f36fd90a 2022-07-09 op return 0;
800 f36fd90a 2022-07-09 op }
801 f36fd90a 2022-07-09 op #endif /* TEST_SYS_QUEUE */
802 f36fd90a 2022-07-09 op #if TEST_SYS_SYSMACROS_H
803 f36fd90a 2022-07-09 op #include <sys/sysmacros.h>
804 f36fd90a 2022-07-09 op
805 f36fd90a 2022-07-09 op int
806 f36fd90a 2022-07-09 op main(void)
807 f36fd90a 2022-07-09 op {
808 f36fd90a 2022-07-09 op return !minor(0);
809 f36fd90a 2022-07-09 op }
810 f36fd90a 2022-07-09 op #endif /* TEST_SYS_SYSMACROS_H */
811 f36fd90a 2022-07-09 op #if TEST_SYS_TREE
812 f36fd90a 2022-07-09 op #include <sys/tree.h>
813 f36fd90a 2022-07-09 op #include <stdlib.h>
814 f36fd90a 2022-07-09 op
815 f36fd90a 2022-07-09 op struct node {
816 f36fd90a 2022-07-09 op RB_ENTRY(node) entry;
817 f36fd90a 2022-07-09 op int i;
818 f36fd90a 2022-07-09 op };
819 f36fd90a 2022-07-09 op
820 f36fd90a 2022-07-09 op static int
821 f36fd90a 2022-07-09 op intcmp(struct node *e1, struct node *e2)
822 f36fd90a 2022-07-09 op {
823 f36fd90a 2022-07-09 op return (e1->i < e2->i ? -1 : e1->i > e2->i);
824 f36fd90a 2022-07-09 op }
825 f36fd90a 2022-07-09 op
826 f36fd90a 2022-07-09 op RB_HEAD(inttree, node) head = RB_INITIALIZER(&head);
827 f36fd90a 2022-07-09 op RB_PROTOTYPE(inttree, node, entry, intcmp)
828 f36fd90a 2022-07-09 op RB_GENERATE(inttree, node, entry, intcmp)
829 f36fd90a 2022-07-09 op
830 f36fd90a 2022-07-09 op int testdata[] = {
831 f36fd90a 2022-07-09 op 20, 16, 17, 13, 3, 6, 1, 8, 2, 4
832 f36fd90a 2022-07-09 op };
833 f36fd90a 2022-07-09 op
834 f36fd90a 2022-07-09 op int
835 f36fd90a 2022-07-09 op main(void)
836 f36fd90a 2022-07-09 op {
837 f36fd90a 2022-07-09 op size_t i;
838 f36fd90a 2022-07-09 op struct node *n;
839 f36fd90a 2022-07-09 op
840 f36fd90a 2022-07-09 op for (i = 0; i < sizeof(testdata) / sizeof(testdata[0]); i++) {
841 f36fd90a 2022-07-09 op if ((n = malloc(sizeof(struct node))) == NULL)
842 f36fd90a 2022-07-09 op return 1;
843 f36fd90a 2022-07-09 op n->i = testdata[i];
844 f36fd90a 2022-07-09 op RB_INSERT(inttree, &head, n);
845 f36fd90a 2022-07-09 op }
846 f36fd90a 2022-07-09 op
847 f36fd90a 2022-07-09 op return 0;
848 f36fd90a 2022-07-09 op }
849 f36fd90a 2022-07-09 op
850 f36fd90a 2022-07-09 op #endif /* TEST_SYS_TREE */
851 31e12e67 2023-09-07 op #if TEST_TIMESPECSUB
852 31e12e67 2023-09-07 op #include <sys/time.h>
853 31e12e67 2023-09-07 op
854 31e12e67 2023-09-07 op int
855 31e12e67 2023-09-07 op main(void)
856 31e12e67 2023-09-07 op {
857 31e12e67 2023-09-07 op struct timespec a = {0, 0}, b = {0, 0}, c;
858 31e12e67 2023-09-07 op
859 31e12e67 2023-09-07 op timespecsub(&a, &b, &c);
860 31e12e67 2023-09-07 op return c.tv_sec;
861 31e12e67 2023-09-07 op }
862 31e12e67 2023-09-07 op #endif /* TEST_TIMESPECSUB */
863 f36fd90a 2022-07-09 op #if TEST_UNVEIL
864 f36fd90a 2022-07-09 op #include <unistd.h>
865 f36fd90a 2022-07-09 op
866 f36fd90a 2022-07-09 op int
867 f36fd90a 2022-07-09 op main(void)
868 f36fd90a 2022-07-09 op {
869 f36fd90a 2022-07-09 op return -1 != unveil(NULL, NULL);
870 f36fd90a 2022-07-09 op }
871 f36fd90a 2022-07-09 op #endif /* TEST_UNVEIL */
872 f36fd90a 2022-07-09 op #if TEST_WAIT_ANY
873 f36fd90a 2022-07-09 op #include <sys/wait.h>
874 f36fd90a 2022-07-09 op
875 f36fd90a 2022-07-09 op int
876 f36fd90a 2022-07-09 op main(void)
877 f36fd90a 2022-07-09 op {
878 f36fd90a 2022-07-09 op int st;
879 f36fd90a 2022-07-09 op
880 f36fd90a 2022-07-09 op return waitpid(WAIT_ANY, &st, WNOHANG) != -1;
881 f36fd90a 2022-07-09 op }
882 f36fd90a 2022-07-09 op #endif /* TEST_WAIT_ANY */
883 f36fd90a 2022-07-09 op #if TEST_LIB_FLAC
884 f36fd90a 2022-07-09 op #include <FLAC/stream_decoder.h>
885 f36fd90a 2022-07-09 op
886 f36fd90a 2022-07-09 op int
887 f36fd90a 2022-07-09 op main(void)
888 f36fd90a 2022-07-09 op {
889 f36fd90a 2022-07-09 op FLAC__StreamDecoder *decoder = NULL;
890 f36fd90a 2022-07-09 op FLAC__StreamDecoderInitStatus init_status;
891 f36fd90a 2022-07-09 op
892 f36fd90a 2022-07-09 op decoder = FLAC__stream_decoder_new();
893 f36fd90a 2022-07-09 op FLAC__stream_decoder_delete(decoder);
894 f36fd90a 2022-07-09 op return 0;
895 f36fd90a 2022-07-09 op }
896 f36fd90a 2022-07-09 op #endif /* TEST_LIB_FLAC */
897 f36fd90a 2022-07-09 op #if TEST_LIB_MPG123
898 f36fd90a 2022-07-09 op #include <mpg123.h>
899 f36fd90a 2022-07-09 op
900 f36fd90a 2022-07-09 op int
901 f36fd90a 2022-07-09 op main(void)
902 f36fd90a 2022-07-09 op {
903 f36fd90a 2022-07-09 op mpg123_handle *mh;
904 f36fd90a 2022-07-09 op
905 f36fd90a 2022-07-09 op mh = mpg123_new(NULL, NULL);
906 f36fd90a 2022-07-09 op mpg123_delete(mh);
907 f36fd90a 2022-07-09 op return 0;
908 f36fd90a 2022-07-09 op }
909 f36fd90a 2022-07-09 op #endif/* TEST_LIB_MPG123 */
910 d1705aab 2023-10-07 op #if TEST_LIB_PTHREAD
911 d1705aab 2023-10-07 op #include <stdlib.h>
912 d1705aab 2023-10-07 op #include <pthread.h>
913 d1705aab 2023-10-07 op
914 d1705aab 2023-10-07 op int
915 d1705aab 2023-10-07 op main(void)
916 d1705aab 2023-10-07 op {
917 d1705aab 2023-10-07 op pthread_mutex_t mutex;
918 d1705aab 2023-10-07 op
919 d1705aab 2023-10-07 op return (pthread_mutex_init(&mutex, NULL));
920 d1705aab 2023-10-07 op }
921 d1705aab 2023-10-07 op #endif/* TEST_LIB_PTHREAD */
922 f36fd90a 2022-07-09 op #if TEST_LIB_OPUSFILE
923 f36fd90a 2022-07-09 op #include <stdio.h>
924 f36fd90a 2022-07-09 op #include <opusfile.h>
925 f36fd90a 2022-07-09 op
926 f36fd90a 2022-07-09 op int
927 f36fd90a 2022-07-09 op main(void)
928 f36fd90a 2022-07-09 op {
929 f36fd90a 2022-07-09 op FILE *f;
930 f36fd90a 2022-07-09 op OggOpusFile *of;
931 f36fd90a 2022-07-09 op OpusFileCallbacks cb = {NULL, NULL, NULL, NULL};
932 f36fd90a 2022-07-09 op int r;
933 f36fd90a 2022-07-09 op
934 f36fd90a 2022-07-09 op f = op_fdopen(&cb, 0, "r");
935 f36fd90a 2022-07-09 op of = op_open_callbacks(f, &cb, NULL, 0, &r);
936 f36fd90a 2022-07-09 op op_free(of);
937 f36fd90a 2022-07-09 op return 0;
938 f36fd90a 2022-07-09 op }
939 f36fd90a 2022-07-09 op #endif /* TEST_LIB_OPUSFILE */
940 f36fd90a 2022-07-09 op #if TEST_LIB_VORBISFILE
941 f36fd90a 2022-07-09 op #include <stdio.h>
942 f36fd90a 2022-07-09 op #include <vorbis/vorbisfile.h>
943 f36fd90a 2022-07-09 op
944 f36fd90a 2022-07-09 op int
945 f36fd90a 2022-07-09 op main(void)
946 f36fd90a 2022-07-09 op {
947 f36fd90a 2022-07-09 op OggVorbis_File vf;
948 f36fd90a 2022-07-09 op
949 f36fd90a 2022-07-09 op ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE);
950 f36fd90a 2022-07-09 op ov_clear(&vf);
951 f36fd90a 2022-07-09 op return 0;
952 f36fd90a 2022-07-09 op }
953 f36fd90a 2022-07-09 op #endif /* TEST_LIB_VORBISFILE */
954 d1705aab 2023-10-07 op #if TEST_LIB_AO
955 d1705aab 2023-10-07 op #include <stdio.h>
956 d1705aab 2023-10-07 op #include <string.h>
957 d1705aab 2023-10-07 op #include <ao/ao.h>
958 d1705aab 2023-10-07 op
959 d1705aab 2023-10-07 op int
960 d1705aab 2023-10-07 op main(void)
961 d1705aab 2023-10-07 op {
962 d1705aab 2023-10-07 op ao_initialize();
963 d1705aab 2023-10-07 op return (0);
964 d1705aab 2023-10-07 op }
965 d1705aab 2023-10-07 op #endif /* TEST_LIB_AO */
966 34674849 2023-03-23 op #if TEST_LIB_ASOUND
967 34674849 2023-03-23 op #include <alsa/asoundlib.h>
968 34674849 2023-03-23 op
969 34674849 2023-03-23 op int
970 34674849 2023-03-23 op main(void)
971 34674849 2023-03-23 op {
972 34674849 2023-03-23 op snd_pcm_t *pcm;
973 34674849 2023-03-23 op int err;
974 34674849 2023-03-23 op
975 34674849 2023-03-23 op err = snd_pcm_open(&pcm, "default", SND_PCM_STREAM_PLAYBACK,
976 34674849 2023-03-23 op SND_PCM_NONBLOCK);
977 34674849 2023-03-23 op return err;
978 34674849 2023-03-23 op }
979 34674849 2023-03-23 op #endif /* TEST_LIB_ASOUND */
980 f36fd90a 2022-07-09 op #if TEST_LIB_SNDIO
981 f36fd90a 2022-07-09 op #include <sndio.h>
982 f36fd90a 2022-07-09 op
983 f36fd90a 2022-07-09 op int
984 f36fd90a 2022-07-09 op main(void)
985 f36fd90a 2022-07-09 op {
986 f36fd90a 2022-07-09 op struct sio_hdl *hdl;
987 f36fd90a 2022-07-09 op hdl = sio_open(SIO_DEVANY, SIO_PLAY, 1);
988 f36fd90a 2022-07-09 op sio_close(hdl);
989 f9756af5 2022-07-21 op return 0;
990 f36fd90a 2022-07-09 op }
991 f36fd90a 2022-07-09 op #endif /* TEST_LIB_SNDIO */
992 56de3111 2023-09-07 op #if TEST_LIB_MD
993 56de3111 2023-09-07 op #include <sys/types.h>
994 56de3111 2023-09-07 op #include <sha1.h>
995 56de3111 2023-09-07 op
996 56de3111 2023-09-07 op int
997 56de3111 2023-09-07 op main(void)
998 56de3111 2023-09-07 op {
999 56de3111 2023-09-07 op SHA1_CTX ctx;
1000 56de3111 2023-09-07 op char result[SHA1_DIGEST_STRING_LENGTH];
1001 56de3111 2023-09-07 op
1002 56de3111 2023-09-07 op SHA1Init(&ctx);
1003 56de3111 2023-09-07 op SHA1Update(&ctx, (const unsigned char *)"abcd", 4);
1004 56de3111 2023-09-07 op SHA1End(&ctx, result);
1005 56de3111 2023-09-07 op
1006 56de3111 2023-09-07 op return 0;
1007 56de3111 2023-09-07 op }
1008 56de3111 2023-09-07 op #endif /* TEST_LIB_MD */