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