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