428
+ − 1 /* Declarations for getopt.
+ − 2 Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+ − 3
+ − 4 NOTE: The canonical source of this file is maintained with the GNU C Library.
+ − 5 Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+ − 6
+ − 7 This program is free software; you can redistribute it and/or modify it
+ − 8 under the terms of the GNU General Public License as published by the
+ − 9 Free Software Foundation; either version 2, or (at your option) any
+ − 10 later version.
+ − 11
+ − 12 This program is distributed in the hope that it will be useful,
+ − 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
+ − 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ − 15 GNU General Public License for more details.
+ − 16
+ − 17 You should have received a copy of the GNU General Public License
+ − 18 along with this program; if not, write to the Free Software
+ − 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ − 20 USA. */
+ − 21
+ − 22 #ifndef _GETOPT_H
+ − 23 #define _GETOPT_H 1
+ − 24
+ − 25 #ifdef __cplusplus
+ − 26 extern "C" {
+ − 27 #endif
+ − 28
+ − 29 /* For communication from `getopt' to the caller.
+ − 30 When `getopt' finds an option that takes an argument,
+ − 31 the argument value is returned here.
+ − 32 Also, when `ordering' is RETURN_IN_ORDER,
+ − 33 each non-option ARGV-element is returned here. */
+ − 34
+ − 35 extern char *optarg;
+ − 36
+ − 37 /* Index in ARGV of the next element to be scanned.
+ − 38 This is used for communication to and from the caller
+ − 39 and for communication between successive calls to `getopt'.
+ − 40
+ − 41 On entry to `getopt', zero means this is the first call; initialize.
+ − 42
+ − 43 When `getopt' returns -1, this is the index of the first of the
+ − 44 non-option elements that the caller should itself scan.
+ − 45
+ − 46 Otherwise, `optind' communicates from one call to the next
+ − 47 how much of ARGV has been scanned so far. */
+ − 48
+ − 49 extern int optind;
+ − 50
+ − 51 /* Callers store zero here to inhibit the error message `getopt' prints
+ − 52 for unrecognized options. */
+ − 53
+ − 54 extern int opterr;
+ − 55
+ − 56 /* Set to an option character which was unrecognized. */
+ − 57
+ − 58 extern int optopt;
+ − 59
+ − 60 /* Describe the long-named options requested by the application.
+ − 61 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ − 62 of `struct option' terminated by an element containing a name which is
+ − 63 zero.
+ − 64
+ − 65 The field `has_arg' is:
+ − 66 no_argument (or 0) if the option does not take an argument,
+ − 67 required_argument (or 1) if the option requires an argument,
+ − 68 optional_argument (or 2) if the option takes an optional argument.
+ − 69
+ − 70 If the field `flag' is not NULL, it points to a variable that is set
+ − 71 to the value given in the field `val' when the option is found, but
+ − 72 left unchanged if the option is not found.
+ − 73
+ − 74 To have a long-named option do something other than set an `int' to
+ − 75 a compiled-in constant, such as set a value from `optarg', set the
+ − 76 option's `flag' field to zero and its `val' field to a nonzero
+ − 77 value (the equivalent single-letter option character, if there is
+ − 78 one). For long options that have a zero `flag' field, `getopt'
+ − 79 returns the contents of the `val' field. */
+ − 80
+ − 81 struct option
+ − 82 {
+ − 83 #if defined (__STDC__) && __STDC__
+ − 84 const char *name;
+ − 85 #else
+ − 86 char *name;
+ − 87 #endif
+ − 88 /* has_arg can't be an enum because some compilers complain about
+ − 89 type mismatches in all the code that assumes it is an int. */
+ − 90 int has_arg;
+ − 91 int *flag;
+ − 92 int val;
+ − 93 };
+ − 94
+ − 95 /* Names for the values of the `has_arg' field of `struct option'. */
+ − 96
+ − 97 #define no_argument 0
+ − 98 #define required_argument 1
+ − 99 #define optional_argument 2
+ − 100
442
+ − 101 #if defined (__GNU_LIBRARY__) || defined (__cplusplus) || defined (CYGWIN)
428
+ − 102 /* Many other libraries have conflicting prototypes for getopt, with
+ − 103 differences in the consts, in stdlib.h. To avoid compilation
+ − 104 errors, only prototype getopt for the GNU C library. */
+ − 105 extern int getopt (int argc, char *const *argv, const char *shortopts);
440
+ − 106 #else /* not __GNU_LIBRARY__ || C++ */
428
+ − 107 extern int getopt ();
440
+ − 108 #endif /* __GNU_LIBRARY__ || C++ */
428
+ − 109 extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+ − 110 const struct option *longopts, int *longind);
+ − 111 extern int getopt_long_only (int argc, char *const *argv,
+ − 112 const char *shortopts,
+ − 113 const struct option *longopts, int *longind);
+ − 114
+ − 115 /* Internal only. Users should not call this directly. */
+ − 116 extern int _getopt_internal (int argc, char *const *argv,
+ − 117 const char *shortopts,
+ − 118 const struct option *longopts, int *longind,
+ − 119 int long_only);
+ − 120
+ − 121 #ifdef __cplusplus
+ − 122 }
+ − 123 #endif
+ − 124
+ − 125 #endif /* _GETOPT_H */