|
|
1.1 ! root 1: /* Declarations for getopt. ! 2: Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. ! 3: ! 4: This program is free software; you can redistribute it and/or modify it ! 5: under the terms of the GNU General Public License as published by the ! 6: Free Software Foundation; either version 2, or (at your option) any ! 7: later version. ! 8: ! 9: This program is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 12: GNU General Public License for more details. ! 13: ! 14: You should have received a copy of the GNU General Public License ! 15: along with this program; if not, write to the Free Software ! 16: Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ! 17: ! 18: This file was modified slightly by Ian Lance Taylor, November 1992, ! 19: for Taylor UUCP. */ ! 20: ! 21: #ifndef _GETOPT_H ! 22: #define _GETOPT_H 1 ! 23: ! 24: #ifdef __cplusplus ! 25: extern "C" { ! 26: #endif ! 27: ! 28: /* Ian Lance Taylor <[email protected]> added the following defines for ! 29: Taylor UUCP. This avoids reported conflicts with system getopt ! 30: definitions. */ ! 31: #define getopt gnu_getopt ! 32: #define optarg gnu_optarg ! 33: #define optind gnu_optind ! 34: #define opterr gnu_opterr ! 35: ! 36: /* For communication from `getopt' to the caller. ! 37: When `getopt' finds an option that takes an argument, ! 38: the argument value is returned here. ! 39: Also, when `ordering' is RETURN_IN_ORDER, ! 40: each non-option ARGV-element is returned here. */ ! 41: ! 42: extern char *optarg; ! 43: ! 44: /* Index in ARGV of the next element to be scanned. ! 45: This is used for communication to and from the caller ! 46: and for communication between successive calls to `getopt'. ! 47: ! 48: On entry to `getopt', zero means this is the first call; initialize. ! 49: ! 50: When `getopt' returns EOF, this is the index of the first of the ! 51: non-option elements that the caller should itself scan. ! 52: ! 53: Otherwise, `optind' communicates from one call to the next ! 54: how much of ARGV has been scanned so far. */ ! 55: ! 56: extern int optind; ! 57: ! 58: /* Callers store zero here to inhibit the error message `getopt' prints ! 59: for unrecognized options. */ ! 60: ! 61: extern int opterr; ! 62: ! 63: /* Describe the long-named options requested by the application. ! 64: The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector ! 65: of `struct option' terminated by an element containing a name which is ! 66: zero. ! 67: ! 68: The field `has_arg' is: ! 69: no_argument (or 0) if the option does not take an argument, ! 70: required_argument (or 1) if the option requires an argument, ! 71: optional_argument (or 2) if the option takes an optional argument. ! 72: ! 73: If the field `flag' is not NULL, it points to a variable that is set ! 74: to the value given in the field `val' when the option is found, but ! 75: left unchanged if the option is not found. ! 76: ! 77: To have a long-named option do something other than set an `int' to ! 78: a compiled-in constant, such as set a value from `optarg', set the ! 79: option's `flag' field to zero and its `val' field to a nonzero ! 80: value (the equivalent single-letter option character, if there is ! 81: one). For long options that have a zero `flag' field, `getopt' ! 82: returns the contents of the `val' field. */ ! 83: ! 84: struct option ! 85: { ! 86: const char *name; ! 87: /* has_arg can't be an enum because some compilers complain about ! 88: type mismatches in all the code that assumes it is an int. */ ! 89: int has_arg; ! 90: int *flag; ! 91: int val; ! 92: }; ! 93: ! 94: /* Names for the values of the `has_arg' field of `struct option'. */ ! 95: ! 96: enum _argtype ! 97: { ! 98: no_argument, ! 99: required_argument, ! 100: optional_argument ! 101: }; ! 102: ! 103: extern int getopt P((int argc, char *const *argv, const char *shortopts)); ! 104: extern int getopt_long P((int argc, char *const *argv, const char *shortopts, ! 105: const struct option *longopts, int *longind)); ! 106: extern int getopt_long_only P((int argc, char *const *argv, ! 107: const char *shortopts, ! 108: const struct option *longopts, int *longind)); ! 109: ! 110: /* Internal only. Users should not call this directly. */ ! 111: extern int _getopt_internal P((int argc, char *const *argv, ! 112: const char *shortopts, ! 113: const struct option *longopts, int *longind, ! 114: int long_only)); ! 115: ! 116: #ifdef __cplusplus ! 117: } ! 118: #endif ! 119: ! 120: #endif /* _GETOPT_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.