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