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