1a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Declarations for getopt.
2a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007
3a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Free Software Foundation, Inc.
4a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This file is part of the GNU C Library.
5a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
6a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This program is free software: you can redistribute it and/or modify
7a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   it under the terms of the GNU General Public License as published by
8a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   the Free Software Foundation; either version 3 of the License, or
9a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   (at your option) any later version.
10a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
11a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This program is distributed in the hope that it will be useful,
12a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   but WITHOUT ANY WARRANTY; without even the implied warranty of
13a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   GNU General Public License for more details.
15a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
16a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   You should have received a copy of the GNU General Public License
17a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
19a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef _GETOPT_H
20a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
21a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef __need_getopt
22a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define _GETOPT_H 1
23a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
24a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
25a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Standalone applications should #define __GETOPT_PREFIX to an
26a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   identifier that prefixes the external functions and variables
27a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   defined in this header.  When this happens, include the
28a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   headers that might declare getopt so that they will not cause
29a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   confusion if included after this file.  Then systematically rename
30a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   identifiers so that they do not collide with the system functions
31a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   and variables.  Renaming avoids problems with some compilers and
32a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   linkers.  */
33a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if defined __GETOPT_PREFIX && !defined __need_getopt
34a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# include <stdlib.h>
35a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# include <stdio.h>
36a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# include <unistd.h>
37a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef __need_getopt
38a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef getopt
39a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef getopt_long
40a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef getopt_long_only
41a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef optarg
42a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef opterr
43a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef optind
44a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# undef optopt
45a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define __GETOPT_CONCAT(x, y) x ## y
46a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
47a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
48a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define getopt __GETOPT_ID (getopt)
49a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define getopt_long __GETOPT_ID (getopt_long)
50a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define getopt_long_only __GETOPT_ID (getopt_long_only)
51a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define optarg __GETOPT_ID (optarg)
52a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define opterr __GETOPT_ID (opterr)
53a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define optind __GETOPT_ID (optind)
54a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define optopt __GETOPT_ID (optopt)
55a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
56a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
57a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Standalone applications get correct prototypes for getopt_long and
58a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   getopt_long_only; they declare "char **argv".  libc uses prototypes
59a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   with "char *const *argv" that are incorrect because getopt_long and
60a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   getopt_long_only can permute argv; this is required for backward
61a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   compatibility (e.g., for LSB 2.0.1).
62a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
63a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
64a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   but it caused redefinition warnings if both unistd.h and getopt.h were
65a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   included, since unistd.h includes getopt.h having previously defined
66a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   __need_getopt.
67a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
68a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   The only place where __getopt_argv_const is used is in definitions
69a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   of getopt_long and getopt_long_only below, but these are visible
70a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   only if __need_getopt is not defined, so it is quite safe to rewrite
71a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   the conditional as follows:
72a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner*/
73a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !defined __need_getopt
74a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if defined __GETOPT_PREFIX
75a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#  define __getopt_argv_const /* empty */
76a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else
77a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#  define __getopt_argv_const const
78a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif
79a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
80a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
81a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* If __GNU_LIBRARY__ is not already defined, either we are being used
82a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   standalone, or this is the first header included in the source file.
83a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   If we are being used with glibc, we need to include <features.h>, but
84a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
85a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   not defined, include <ctype.h>, which will pull in <features.h> for us
86a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
87a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   doesn't flood the namespace with stuff the way some other headers do.)  */
88a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#if !defined __GNU_LIBRARY__
89a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# include <ctype.h>
90a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
91a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
92a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef __THROW
93a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# ifndef __GNUC_PREREQ
94a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#  define __GNUC_PREREQ(maj, min) (0)
95a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif
96a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# if defined __cplusplus && __GNUC_PREREQ (2,8)
97a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#  define __THROW	throw ()
98a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# else
99a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#  define __THROW
100a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# endif
101a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
102a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
103a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef __cplusplus
104a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern "C" {
105a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
106a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
107a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* For communication from `getopt' to the caller.
108a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   When `getopt' finds an option that takes an argument,
109a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   the argument value is returned here.
110a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Also, when `ordering' is RETURN_IN_ORDER,
111a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   each non-option ARGV-element is returned here.  */
112a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
113a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern char *optarg;
114a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
115a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Index in ARGV of the next element to be scanned.
116a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   This is used for communication to and from the caller
117a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   and for communication between successive calls to `getopt'.
118a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
119a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   On entry to `getopt', zero means this is the first call; initialize.
120a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
121a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   When `getopt' returns -1, this is the index of the first of the
122a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   non-option elements that the caller should itself scan.
123a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
124a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Otherwise, `optind' communicates from one call to the next
125a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   how much of ARGV has been scanned so far.  */
126a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
127a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int optind;
128a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
129a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Callers store zero here to inhibit the error message `getopt' prints
130a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   for unrecognized options.  */
131a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
132a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int opterr;
133a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
134a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Set to an option character which was unrecognized.  */
135a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
136a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int optopt;
137a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
138a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef __need_getopt
139a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Describe the long-named options requested by the application.
140a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
141a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   of `struct option' terminated by an element containing a name which is
142a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   zero.
143a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
144a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   The field `has_arg' is:
145a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   no_argument		(or 0) if the option does not take an argument,
146a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   required_argument	(or 1) if the option requires an argument,
147a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   optional_argument	(or 2) if the option takes an optional argument.
148a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
149a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   If the field `flag' is not NULL, it points to a variable that is set
150a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   to the value given in the field `val' when the option is found, but
151a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   left unchanged if the option is not found.
152a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
153a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   To have a long-named option do something other than set an `int' to
154a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   a compiled-in constant, such as set a value from `optarg', set the
155a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   option's `flag' field to zero and its `val' field to a nonzero
156a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   value (the equivalent single-letter option character, if there is
157a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   one).  For long options that have a zero `flag' field, `getopt'
158a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   returns the contents of the `val' field.  */
159a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
160a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerstruct option
161a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner{
162a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  const char *name;
163a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  /* has_arg can't be an enum because some compilers complain about
164a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner     type mismatches in all the code that assumes it is an int.  */
165a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  int has_arg;
166a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  int *flag;
167a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner  int val;
168a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner};
169a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
170a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Names for the values of the `has_arg' field of `struct option'.  */
171a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
172a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define no_argument		0
173a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define required_argument	1
174a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner# define optional_argument	2
175a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif	/* need getopt */
176a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
177a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
178a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Get definitions and prototypes for functions to process the
179a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   arguments in ARGV (ARGC of them, minus the program name) for
180a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   options given in OPTS.
181a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
182a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   Return the option character from OPTS just read.  Return -1 when
183a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   there are no more options.  For unrecognized options, or options
184a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   missing arguments, `optopt' is set to the option letter, and '?' is
185a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   returned.
186a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
187a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   The OPTS string is a list of characters which are recognized option
188a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   letters, optionally followed by colons, specifying that that letter
189a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   takes an argument, to be placed in `optarg'.
190a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
191a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   If a letter in OPTS is followed by two colons, its argument is
192a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   optional.  This behavior is specific to the GNU `getopt'.
193a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
194a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   The argument `--' causes premature termination of argument
195a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   scanning, explicitly telling `getopt' that there are no more
196a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   options.
197a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
198a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   If OPTS begins with `-', then non-option arguments are treated as
199a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   arguments to the option '\1'.  This behavior is specific to the GNU
200a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   `getopt'.  If OPTS begins with `+', or POSIXLY_CORRECT is set in
201a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner   the environment, then do not permute arguments.  */
202a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
203a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
204a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner       __THROW;
205a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
206a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifndef __need_getopt
207a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
208a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner			const char *__shortopts,
209a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner		        const struct option *__longopts, int *__longind)
210a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner       __THROW;
211a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerextern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
212a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner			     const char *__shortopts,
213a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner		             const struct option *__longopts, int *__longind)
214a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner       __THROW;
215a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
216a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
217a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
218a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef __cplusplus
219a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner}
220a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif
221a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
222a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Make sure we later can get all the definitions and declarations.  */
223a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#undef __need_getopt
224a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner
225a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif /* getopt.h */
226