Jack2 1.9.6
|
00001 /* Declarations for getopt. 00002 Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. 00003 This file is part of the GNU C Library. 00004 00005 The GNU C Library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public License as 00007 published by the Free Software Foundation; either version 2 of the 00008 License, or (at your option) any later version. 00009 00010 The GNU C Library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with the GNU C Library; see the file COPYING.LIB. If not, 00017 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. */ 00019 00020 #ifndef _GETOPT_H 00021 00022 #ifndef __need_getopt 00023 # define _GETOPT_H 1 00024 #endif 00025 00026 #ifdef __cplusplus 00027 extern "C" 00028 { 00029 #endif 00030 00031 /* For communication from `getopt' to the caller. 00032 When `getopt' finds an option that takes an argument, 00033 the argument value is returned here. 00034 Also, when `ordering' is RETURN_IN_ORDER, 00035 each non-option ARGV-element is returned here. */ 00036 00037 extern char *optarg; 00038 00039 /* Index in ARGV of the next element to be scanned. 00040 This is used for communication to and from the caller 00041 and for communication between successive calls to `getopt'. 00042 00043 On entry to `getopt', zero means this is the first call; initialize. 00044 00045 When `getopt' returns -1, this is the index of the first of the 00046 non-option elements that the caller should itself scan. 00047 00048 Otherwise, `optind' communicates from one call to the next 00049 how much of ARGV has been scanned so far. */ 00050 00051 extern int optind; 00052 00053 /* Callers store zero here to inhibit the error message `getopt' prints 00054 for unrecognized options. */ 00055 00056 extern int opterr; 00057 00058 /* Set to an option character which was unrecognized. */ 00059 00060 extern int optopt; 00061 00062 #ifndef __need_getopt 00063 /* Describe the long-named options requested by the application. 00064 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector 00065 of `struct option' terminated by an element containing a name which is 00066 zero. 00067 00068 The field `has_arg' is: 00069 no_argument (or 0) if the option does not take an argument, 00070 required_argument (or 1) if the option requires an argument, 00071 optional_argument (or 2) if the option takes an optional argument. 00072 00073 If the field `flag' is not NULL, it points to a variable that is set 00074 to the value given in the field `val' when the option is found, but 00075 left unchanged if the option is not found. 00076 00077 To have a long-named option do something other than set an `int' to 00078 a compiled-in constant, such as set a value from `optarg', set the 00079 option's `flag' field to zero and its `val' field to a nonzero 00080 value (the equivalent single-letter option character, if there is 00081 one). For long options that have a zero `flag' field, `getopt' 00082 returns the contents of the `val' field. */ 00083 00084 struct option { 00085 # if defined __STDC__ && __STDC__ 00086 const char *name; 00087 # else 00088 00089 char *name; 00090 # endif 00091 /* has_arg can't be an enum because some compilers complain about 00092 type mismatches in all the code that assumes it is an int. */ 00093 int has_arg; 00094 int *flag; 00095 int val; 00096 }; 00097 00098 /* Names for the values of the `has_arg' field of `struct option'. */ 00099 00100 # define no_argument 0 00101 # define required_argument 1 00102 # define optional_argument 2 00103 #endif /* need getopt */ 00104 00105 00106 /* Get definitions and prototypes for functions to process the 00107 arguments in ARGV (ARGC of them, minus the program name) for 00108 options given in OPTS. 00109 00110 Return the option character from OPTS just read. Return -1 when 00111 there are no more options. For unrecognized options, or options 00112 missing arguments, `optopt' is set to the option letter, and '?' is 00113 returned. 00114 00115 The OPTS string is a list of characters which are recognized option 00116 letters, optionally followed by colons, specifying that that letter 00117 takes an argument, to be placed in `optarg'. 00118 00119 If a letter in OPTS is followed by two colons, its argument is 00120 optional. This behavior is specific to the GNU `getopt'. 00121 00122 The argument `--' causes premature termination of argument 00123 scanning, explicitly telling `getopt' that there are no more 00124 options. 00125 00126 If OPTS begins with `--', then non-option arguments are treated as 00127 arguments to the option '\0'. This behavior is specific to the GNU 00128 `getopt'. */ 00129 00130 #if defined __STDC__ && __STDC__ 00131 # ifdef __GNU_LIBRARY__ 00132 /* Many other libraries have conflicting prototypes for getopt, with 00133 differences in the consts, in stdlib.h. To avoid compilation 00134 errors, only prototype getopt for the GNU C library. */ 00135 extern int getopt (int __argc, char *const *__argv, const char *__shortopts); 00136 # else /* not __GNU_LIBRARY__ */ 00137 extern int getopt (); 00138 # endif /* __GNU_LIBRARY__ */ 00139 00140 # ifndef __need_getopt 00141 00142 extern int getopt_long (int argc, char ** argv, const char * shortopts, 00143 const struct option * longopts, int * longind); 00144 00145 extern int getopt_long_only (int __argc, char *const *__argv, 00146 const char *__shortopts, 00147 const struct option *__longopts, int *__longind); 00148 00149 /* Internal only. Users should not call this directly. */ 00150 extern int _getopt_internal (int __argc, char *const *__argv, 00151 const char *__shortopts, 00152 const struct option *__longopts, int *__longind, 00153 int __long_only); 00154 # endif 00155 #else /* not __STDC__ */ 00156 extern int getopt (); 00157 # ifndef __need_getopt 00158 extern int getopt_long (); 00159 extern int getopt_long_only (); 00160 00161 extern int _getopt_internal (); 00162 # endif 00163 #endif /* __STDC__ */ 00164 00165 #ifdef __cplusplus 00166 } 00167 #endif 00168 00169 /* Make sure we later can get all the definitions and declarations. */ 00170 #undef __need_getopt 00171 00172 #endif /* getopt.h */