xref: /openbsd-src/regress/lib/libc/strerror/strerror_test.c (revision 69f3b041174525bb27c09f7fe653905bb70f8592)
1*69f3b041Sguenther /* $OpenBSD: strerror_test.c,v 1.5 2015/09/14 06:31:25 guenther Exp $ */
233b4f39fSespie /*
333b4f39fSespie  * Copyright (c) 2004 Marc Espie <espie@cvs.openbsd.org>
433b4f39fSespie  *
533b4f39fSespie  * Permission to use, copy, modify, and distribute this software for any
633b4f39fSespie  * purpose with or without fee is hereby granted, provided that the above
733b4f39fSespie  * copyright notice and this permission notice appear in all copies.
833b4f39fSespie  *
933b4f39fSespie  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1033b4f39fSespie  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1133b4f39fSespie  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1233b4f39fSespie  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1333b4f39fSespie  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1433b4f39fSespie  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1533b4f39fSespie  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1633b4f39fSespie  */
1704978e93Sotto #include <signal.h>
1833b4f39fSespie #include <string.h>
1933b4f39fSespie #include <stdio.h>
2033b4f39fSespie #include <limits.h>
216f1d08d1Sespie #include <errno.h>
226f1d08d1Sespie 
236f1d08d1Sespie void
check_strerror_r(int val)246f1d08d1Sespie check_strerror_r(int val)
256f1d08d1Sespie {
26c5f4fad5Sotto 	char buffer[NL_TEXTMAX + 1];
276f1d08d1Sespie 	int i, r;
286f1d08d1Sespie 
29c5f4fad5Sotto 	memset(buffer, 'X', sizeof(buffer) - 1);
30c5f4fad5Sotto 	buffer[sizeof(buffer) - 1] = '\0';
316f1d08d1Sespie 	(void)strerror_r(val, NULL, 0);	/* XXX */
326f1d08d1Sespie 	for (i = 0; i < 25; i++) {
336f1d08d1Sespie 		r = strerror_r(val, buffer, i);
34c5f4fad5Sotto 		printf("%d %d %zu: %s\n", i, r, strlen(buffer), buffer);
356f1d08d1Sespie 	}
366f1d08d1Sespie }
376f1d08d1Sespie 
3804978e93Sotto void
check_strsignal(int val)3904978e93Sotto check_strsignal(int val)
4004978e93Sotto {
41*69f3b041Sguenther 	printf("%s\n", strsignal(val));
4204978e93Sotto }
4304978e93Sotto 
446f1d08d1Sespie int
main()456f1d08d1Sespie main()
4633b4f39fSespie {
4733b4f39fSespie 	printf("%s\n", strerror(21345));
4833b4f39fSespie 	printf("%s\n", strerror(-21345));
4933b4f39fSespie 	printf("%s\n", strerror(0));
5033b4f39fSespie 	printf("%s\n", strerror(INT_MAX));
5133b4f39fSespie 	printf("%s\n", strerror(INT_MIN));
526f1d08d1Sespie 	printf("%s\n", strerror(EPERM));
536f1d08d1Sespie 	check_strerror_r(EPERM);
546f1d08d1Sespie 	check_strerror_r(21345);
5504978e93Sotto 	check_strsignal(-1);
5604978e93Sotto 	check_strsignal(0);
5704978e93Sotto 	check_strsignal(10);
5804978e93Sotto 	check_strsignal(NSIG-1);
5904978e93Sotto 	check_strsignal(NSIG);
6004978e93Sotto 	check_strsignal(100);
6104978e93Sotto 	check_strsignal(INT_MAX);
6204978e93Sotto 	check_strsignal(INT_MIN);
6304978e93Sotto 	check_strsignal(UINT_MAX);
6433b4f39fSespie 	return 0;
6533b4f39fSespie }
66