xref: /dflybsd-src/usr.bin/perror/perror.c (revision 0e5b0bcb99ae677287f4dc6ecc45113dc2f65433)
1*0e5b0bcbSSascha Wildner /*-
2*0e5b0bcbSSascha Wildner  * Copyright (c) 2009 Advanced Computing Technologies LLC
3*0e5b0bcbSSascha Wildner  * Written by: George V. Neville-Neil <gnn@FreeBSD.org>
4*0e5b0bcbSSascha Wildner  * All rights reserved.
5*0e5b0bcbSSascha Wildner  *
6*0e5b0bcbSSascha Wildner  * Redistribution and use in source and binary forms, with or without
7*0e5b0bcbSSascha Wildner  * modification, are permitted provided that the following conditions
8*0e5b0bcbSSascha Wildner  * are met:
9*0e5b0bcbSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
10*0e5b0bcbSSascha Wildner  *    notice, this list of conditions and the following disclaimer.
11*0e5b0bcbSSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
12*0e5b0bcbSSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
13*0e5b0bcbSSascha Wildner  *    documentation and/or other materials provided with the distribution.
14*0e5b0bcbSSascha Wildner  *
15*0e5b0bcbSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*0e5b0bcbSSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*0e5b0bcbSSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*0e5b0bcbSSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*0e5b0bcbSSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*0e5b0bcbSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*0e5b0bcbSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*0e5b0bcbSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*0e5b0bcbSSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*0e5b0bcbSSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*0e5b0bcbSSascha Wildner  * SUCH DAMAGE.
26*0e5b0bcbSSascha Wildner  *
27*0e5b0bcbSSascha Wildner  * $FreeBSD: head/usr.bin/perror/perror.c 199642 2009-11-22 05:17:22Z edwin $
28*0e5b0bcbSSascha Wildner  */
29*0e5b0bcbSSascha Wildner 
30*0e5b0bcbSSascha Wildner #include <stdio.h>
31*0e5b0bcbSSascha Wildner #include <stdlib.h>
32*0e5b0bcbSSascha Wildner #include <string.h>
33*0e5b0bcbSSascha Wildner #include <err.h>
34*0e5b0bcbSSascha Wildner #include <locale.h>
35*0e5b0bcbSSascha Wildner #include <sys/errno.h>
36*0e5b0bcbSSascha Wildner 
37*0e5b0bcbSSascha Wildner static void usage(void);
38*0e5b0bcbSSascha Wildner 
39*0e5b0bcbSSascha Wildner int
main(int argc,char ** argv)40*0e5b0bcbSSascha Wildner main(int argc, char **argv)
41*0e5b0bcbSSascha Wildner {
42*0e5b0bcbSSascha Wildner 	char *cp;
43*0e5b0bcbSSascha Wildner 	char *errstr;
44*0e5b0bcbSSascha Wildner 	long errnum;
45*0e5b0bcbSSascha Wildner 
46*0e5b0bcbSSascha Wildner 	setlocale(LC_MESSAGES, "");
47*0e5b0bcbSSascha Wildner 	if (argc != 2)
48*0e5b0bcbSSascha Wildner 		usage();
49*0e5b0bcbSSascha Wildner 
50*0e5b0bcbSSascha Wildner 	errno = 0;
51*0e5b0bcbSSascha Wildner 
52*0e5b0bcbSSascha Wildner 	errnum = strtol(argv[1], &cp, 0);
53*0e5b0bcbSSascha Wildner 
54*0e5b0bcbSSascha Wildner 	if (errno != 0)
55*0e5b0bcbSSascha Wildner 		err(1, NULL);
56*0e5b0bcbSSascha Wildner 
57*0e5b0bcbSSascha Wildner 	if ((errstr = strerror(errnum)) == NULL)
58*0e5b0bcbSSascha Wildner 		err(1, NULL);
59*0e5b0bcbSSascha Wildner 
60*0e5b0bcbSSascha Wildner 	printf("%s\n", errstr);
61*0e5b0bcbSSascha Wildner 
62*0e5b0bcbSSascha Wildner 	exit(0);
63*0e5b0bcbSSascha Wildner }
64*0e5b0bcbSSascha Wildner 
65*0e5b0bcbSSascha Wildner static void
usage(void)66*0e5b0bcbSSascha Wildner usage(void)
67*0e5b0bcbSSascha Wildner {
68*0e5b0bcbSSascha Wildner 	fprintf(stderr, "usage: perror number\n");
69*0e5b0bcbSSascha Wildner 	exit(1);
70*0e5b0bcbSSascha Wildner }
71*0e5b0bcbSSascha Wildner 
72