Jack2 1.9.6

getopt.h

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 */