1*ee67461eSJoseph Mingrone /* $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $ */ 2*ee67461eSJoseph Mingrone /* $FreeBSD: projects/clang400-import/contrib/tcpdump/getopt_long.h 276788 2015-01-07 19:55:18Z delphij $ */ 3*ee67461eSJoseph Mingrone 4*ee67461eSJoseph Mingrone /*- 5*ee67461eSJoseph Mingrone * Copyright (c) 2000 The NetBSD Foundation, Inc. 6*ee67461eSJoseph Mingrone * All rights reserved. 7*ee67461eSJoseph Mingrone * 8*ee67461eSJoseph Mingrone * This code is derived from software contributed to The NetBSD Foundation 9*ee67461eSJoseph Mingrone * by Dieter Baron and Thomas Klausner. 10*ee67461eSJoseph Mingrone * 11*ee67461eSJoseph Mingrone * Redistribution and use in source and binary forms, with or without 12*ee67461eSJoseph Mingrone * modification, are permitted provided that the following conditions 13*ee67461eSJoseph Mingrone * are met: 14*ee67461eSJoseph Mingrone * 1. Redistributions of source code must retain the above copyright 15*ee67461eSJoseph Mingrone * notice, this list of conditions and the following disclaimer. 16*ee67461eSJoseph Mingrone * 2. Redistributions in binary form must reproduce the above copyright 17*ee67461eSJoseph Mingrone * notice, this list of conditions and the following disclaimer in the 18*ee67461eSJoseph Mingrone * documentation and/or other materials provided with the distribution. 19*ee67461eSJoseph Mingrone * 20*ee67461eSJoseph Mingrone * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21*ee67461eSJoseph Mingrone * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22*ee67461eSJoseph Mingrone * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23*ee67461eSJoseph Mingrone * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24*ee67461eSJoseph Mingrone * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25*ee67461eSJoseph Mingrone * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26*ee67461eSJoseph Mingrone * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27*ee67461eSJoseph Mingrone * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28*ee67461eSJoseph Mingrone * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29*ee67461eSJoseph Mingrone * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30*ee67461eSJoseph Mingrone * POSSIBILITY OF SUCH DAMAGE. 31*ee67461eSJoseph Mingrone */ 32*ee67461eSJoseph Mingrone 33*ee67461eSJoseph Mingrone #ifndef ND_GETOPT_LONG_H_ 34*ee67461eSJoseph Mingrone #define ND_GETOPT_LONG_H_ 35*ee67461eSJoseph Mingrone 36*ee67461eSJoseph Mingrone /* 37*ee67461eSJoseph Mingrone * GNU-like getopt_long()/getopt_long_only() with 4.4BSD optreset extension. 38*ee67461eSJoseph Mingrone * getopt() is declared here too for GNU programs. 39*ee67461eSJoseph Mingrone */ 40*ee67461eSJoseph Mingrone #define no_argument 0 41*ee67461eSJoseph Mingrone #define required_argument 1 42*ee67461eSJoseph Mingrone #define optional_argument 2 43*ee67461eSJoseph Mingrone 44*ee67461eSJoseph Mingrone struct option { 45*ee67461eSJoseph Mingrone /* name of long option */ 46*ee67461eSJoseph Mingrone const char *name; 47*ee67461eSJoseph Mingrone /* 48*ee67461eSJoseph Mingrone * one of no_argument, required_argument, and optional_argument: 49*ee67461eSJoseph Mingrone * whether option takes an argument 50*ee67461eSJoseph Mingrone */ 51*ee67461eSJoseph Mingrone int has_arg; 52*ee67461eSJoseph Mingrone /* if not NULL, set *flag to val when option found */ 53*ee67461eSJoseph Mingrone int *flag; 54*ee67461eSJoseph Mingrone /* if flag not NULL, value to set *flag to; else return value */ 55*ee67461eSJoseph Mingrone int val; 56*ee67461eSJoseph Mingrone }; 57*ee67461eSJoseph Mingrone 58*ee67461eSJoseph Mingrone int getopt_long(int, char * const *, const char *, 59*ee67461eSJoseph Mingrone const struct option *, int *); 60*ee67461eSJoseph Mingrone int getopt_long_only(int, char * const *, const char *, 61*ee67461eSJoseph Mingrone const struct option *, int *); 62*ee67461eSJoseph Mingrone 63*ee67461eSJoseph Mingrone extern char *optarg; /* getopt(3) external variables */ 64*ee67461eSJoseph Mingrone extern int optind, opterr, optopt; 65*ee67461eSJoseph Mingrone 66*ee67461eSJoseph Mingrone #endif /* ! ND_GETOPT_LONG_H_ */ 67