1 /* $OpenBSD: strerror_test.c,v 1.4 2005/05/13 07:06:20 otto 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 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 39 check_strsignal(int val) 40 { 41 char buffer[NL_TEXTMAX + 1]; 42 int i, r; 43 44 memset(buffer, 'X', sizeof(buffer) - 1); 45 buffer[sizeof(buffer) - 1] = '\0'; 46 (void)__strsignal(val, buffer); 47 printf("%s\n", buffer); 48 } 49 50 int 51 main() 52 { 53 printf("%s\n", strerror(21345)); 54 printf("%s\n", strerror(-21345)); 55 printf("%s\n", strerror(0)); 56 printf("%s\n", strerror(INT_MAX)); 57 printf("%s\n", strerror(INT_MIN)); 58 printf("%s\n", strerror(EPERM)); 59 check_strerror_r(EPERM); 60 check_strerror_r(21345); 61 check_strsignal(-1); 62 check_strsignal(0); 63 check_strsignal(10); 64 check_strsignal(NSIG-1); 65 check_strsignal(NSIG); 66 check_strsignal(100); 67 check_strsignal(INT_MAX); 68 check_strsignal(INT_MIN); 69 check_strsignal(UINT_MAX); 70 return 0; 71 } 72