19a3009b8SGeorge V. Neville-Neil /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 31de7b4b8SPedro F. Giffuni * 4179fa75eSJohn Baldwin * Copyright (c) 2009 Hudson River Trading LLC 59a3009b8SGeorge V. Neville-Neil * Written by: George V. Neville-Neil <gnn@FreeBSD.org> 69a3009b8SGeorge V. Neville-Neil * All rights reserved. 79a3009b8SGeorge V. Neville-Neil * 89a3009b8SGeorge V. Neville-Neil * Redistribution and use in source and binary forms, with or without 99a3009b8SGeorge V. Neville-Neil * modification, are permitted provided that the following conditions 109a3009b8SGeorge V. Neville-Neil * are met: 119a3009b8SGeorge V. Neville-Neil * 1. Redistributions of source code must retain the above copyright 129a3009b8SGeorge V. Neville-Neil * notice, this list of conditions and the following disclaimer. 139a3009b8SGeorge V. Neville-Neil * 2. Redistributions in binary form must reproduce the above copyright 149a3009b8SGeorge V. Neville-Neil * notice, this list of conditions and the following disclaimer in the 159a3009b8SGeorge V. Neville-Neil * documentation and/or other materials provided with the distribution. 169a3009b8SGeorge V. Neville-Neil * 179a3009b8SGeorge V. Neville-Neil * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 189a3009b8SGeorge V. Neville-Neil * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 199a3009b8SGeorge V. Neville-Neil * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 209a3009b8SGeorge V. Neville-Neil * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 219a3009b8SGeorge V. Neville-Neil * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 229a3009b8SGeorge V. Neville-Neil * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 239a3009b8SGeorge V. Neville-Neil * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 249a3009b8SGeorge V. Neville-Neil * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 259a3009b8SGeorge V. Neville-Neil * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 269a3009b8SGeorge V. Neville-Neil * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 279a3009b8SGeorge V. Neville-Neil * SUCH DAMAGE. 289a3009b8SGeorge V. Neville-Neil */ 299a3009b8SGeorge V. Neville-Neil 309a3009b8SGeorge V. Neville-Neil #include <sys/cdefs.h> 319a3009b8SGeorge V. Neville-Neil __FBSDID("$FreeBSD$"); 329a3009b8SGeorge V. Neville-Neil 339a3009b8SGeorge V. Neville-Neil #include <stdio.h> 349a3009b8SGeorge V. Neville-Neil #include <stdlib.h> 359a3009b8SGeorge V. Neville-Neil #include <string.h> 361fdc45cdSGeorge V. Neville-Neil #include <err.h> 37ec9f71c4SEdwin Groothuis #include <locale.h> 389a3009b8SGeorge V. Neville-Neil #include <sys/errno.h> 399a3009b8SGeorge V. Neville-Neil 40*1a7ac2bdSAlfonso Gregory static void usage(void) __dead2; 419a3009b8SGeorge V. Neville-Neil 4299000ae1SGeorge V. Neville-Neil int 4399000ae1SGeorge V. Neville-Neil main(int argc, char **argv) 449a3009b8SGeorge V. Neville-Neil { 459a3009b8SGeorge V. Neville-Neil char *cp; 461fdc45cdSGeorge V. Neville-Neil char *errstr; 471fdc45cdSGeorge V. Neville-Neil long errnum; 489a3009b8SGeorge V. Neville-Neil 49ec9f71c4SEdwin Groothuis (void) setlocale(LC_MESSAGES, ""); 509a3009b8SGeorge V. Neville-Neil if (argc != 2) 519a3009b8SGeorge V. Neville-Neil usage(); 529a3009b8SGeorge V. Neville-Neil 531fdc45cdSGeorge V. Neville-Neil errno = 0; 541fdc45cdSGeorge V. Neville-Neil 559a3009b8SGeorge V. Neville-Neil errnum = strtol(argv[1], &cp, 0); 569a3009b8SGeorge V. Neville-Neil 571fdc45cdSGeorge V. Neville-Neil if (errno != 0) 581fdc45cdSGeorge V. Neville-Neil err(1, NULL); 599a3009b8SGeorge V. Neville-Neil 601fdc45cdSGeorge V. Neville-Neil if ((errstr = strerror(errnum)) == NULL) 611fdc45cdSGeorge V. Neville-Neil err(1, NULL); 629a3009b8SGeorge V. Neville-Neil 631fdc45cdSGeorge V. Neville-Neil printf("%s\n", errstr); 649a3009b8SGeorge V. Neville-Neil 659a3009b8SGeorge V. Neville-Neil exit(0); 669a3009b8SGeorge V. Neville-Neil } 671fdc45cdSGeorge V. Neville-Neil 681fdc45cdSGeorge V. Neville-Neil static void 69896406c9SXin LI usage(void) 701fdc45cdSGeorge V. Neville-Neil { 711fdc45cdSGeorge V. Neville-Neil fprintf(stderr, "usage: perror number\n"); 721fdc45cdSGeorge V. Neville-Neil exit(1); 731fdc45cdSGeorge V. Neville-Neil } 741fdc45cdSGeorge V. Neville-Neil 75