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