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