1 /* $OpenBSD: strerror_test.c,v 1.5 2015/09/14 06:31:25 guenther Exp $ */
2 /*
3 * Copyright (c) 2004 Marc Espie <espie@cvs.openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17 #include <signal.h>
18 #include <string.h>
19 #include <stdio.h>
20 #include <limits.h>
21 #include <errno.h>
22
23 void
check_strerror_r(int val)24 check_strerror_r(int val)
25 {
26 char buffer[NL_TEXTMAX + 1];
27 int i, r;
28
29 memset(buffer, 'X', sizeof(buffer) - 1);
30 buffer[sizeof(buffer) - 1] = '\0';
31 (void)strerror_r(val, NULL, 0); /* XXX */
32 for (i = 0; i < 25; i++) {
33 r = strerror_r(val, buffer, i);
34 printf("%d %d %zu: %s\n", i, r, strlen(buffer), buffer);
35 }
36 }
37
38 void
check_strsignal(int val)39 check_strsignal(int val)
40 {
41 printf("%s\n", strsignal(val));
42 }
43
44 int
main()45 main()
46 {
47 printf("%s\n", strerror(21345));
48 printf("%s\n", strerror(-21345));
49 printf("%s\n", strerror(0));
50 printf("%s\n", strerror(INT_MAX));
51 printf("%s\n", strerror(INT_MIN));
52 printf("%s\n", strerror(EPERM));
53 check_strerror_r(EPERM);
54 check_strerror_r(21345);
55 check_strsignal(-1);
56 check_strsignal(0);
57 check_strsignal(10);
58 check_strsignal(NSIG-1);
59 check_strsignal(NSIG);
60 check_strsignal(100);
61 check_strsignal(INT_MAX);
62 check_strsignal(INT_MIN);
63 check_strsignal(UINT_MAX);
64 return 0;
65 }
66