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