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>
3182e9f8c2SFaraz Vahedi #include <sys/errno.h>
3282e9f8c2SFaraz Vahedi
3382e9f8c2SFaraz Vahedi #include <err.h>
3482e9f8c2SFaraz Vahedi #include <locale.h>
359a3009b8SGeorge V. Neville-Neil #include <stdio.h>
369a3009b8SGeorge V. Neville-Neil #include <stdlib.h>
379a3009b8SGeorge V. Neville-Neil #include <string.h>
389a3009b8SGeorge V. Neville-Neil
39*adc02d5eSFaraz Vahedi #include <capsicum_helpers.h>
40*adc02d5eSFaraz Vahedi
411a7ac2bdSAlfonso Gregory static void usage(void) __dead2;
429a3009b8SGeorge V. Neville-Neil
4399000ae1SGeorge V. Neville-Neil int
main(int argc,char ** argv)4499000ae1SGeorge V. Neville-Neil main(int argc, char **argv)
459a3009b8SGeorge V. Neville-Neil {
469a3009b8SGeorge V. Neville-Neil char *cp;
471fdc45cdSGeorge V. Neville-Neil char *errstr;
481fdc45cdSGeorge V. Neville-Neil long errnum;
499a3009b8SGeorge V. Neville-Neil
50ec9f71c4SEdwin Groothuis (void) setlocale(LC_MESSAGES, "");
51*adc02d5eSFaraz Vahedi
52*adc02d5eSFaraz Vahedi caph_cache_catpages();
53*adc02d5eSFaraz Vahedi if (caph_limit_stdio() < 0 || caph_enter() < 0)
54*adc02d5eSFaraz Vahedi err(EXIT_FAILURE, "capsicum");
55*adc02d5eSFaraz Vahedi
569a3009b8SGeorge V. Neville-Neil if (argc != 2)
579a3009b8SGeorge V. Neville-Neil usage();
589a3009b8SGeorge V. Neville-Neil
591fdc45cdSGeorge V. Neville-Neil errno = 0;
601fdc45cdSGeorge V. Neville-Neil
619a3009b8SGeorge V. Neville-Neil errnum = strtol(argv[1], &cp, 0);
629a3009b8SGeorge V. Neville-Neil
631fdc45cdSGeorge V. Neville-Neil if (errno != 0)
644dd6597aSFaraz Vahedi err(EXIT_FAILURE, NULL);
659a3009b8SGeorge V. Neville-Neil
661fdc45cdSGeorge V. Neville-Neil if ((errstr = strerror(errnum)) == NULL)
674dd6597aSFaraz Vahedi err(EXIT_FAILURE, NULL);
689a3009b8SGeorge V. Neville-Neil
691fdc45cdSGeorge V. Neville-Neil printf("%s\n", errstr);
709a3009b8SGeorge V. Neville-Neil
714dd6597aSFaraz Vahedi exit(EXIT_SUCCESS);
729a3009b8SGeorge V. Neville-Neil }
731fdc45cdSGeorge V. Neville-Neil
741fdc45cdSGeorge V. Neville-Neil static void
usage(void)75896406c9SXin LI usage(void)
761fdc45cdSGeorge V. Neville-Neil {
771fdc45cdSGeorge V. Neville-Neil fprintf(stderr, "usage: perror number\n");
784dd6597aSFaraz Vahedi exit(EXIT_FAILURE);
791fdc45cdSGeorge V. Neville-Neil }
801fdc45cdSGeorge V. Neville-Neil
81