(linenum→info "unix/slp.c:2238")

glibc/2.7/posix/getopt.h

    1: /* Declarations for getopt.
    2:    Copyright (C) 1989-1994,1996-1999,2001,2003,2004
    3:    Free Software Foundation, Inc.
    4:    This file is part of the GNU C Library.
    5: 
    6:    The GNU C Library is free software; you can redistribute it and/or
    7:    modify it under the terms of the GNU Lesser General Public
    8:    License as published by the Free Software Foundation; either
    9:    version 2.1 of the License, or (at your option) any later version.
   10: 
   11:    The GNU C Library is distributed in the hope that it will be useful,
   12:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:    Lesser General Public License for more details.
   15: 
   16:    You should have received a copy of the GNU Lesser General Public
   17:    License along with the GNU C Library; if not, write to the Free
   18:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   19:    02111-1307 USA.  */
   20: 
   21: #ifndef _GETOPT_H
   22: 
   23: #ifndef __need_getopt
   24: # define _GETOPT_H 1
   25: #endif
   26: 
   27: /* If __GNU_LIBRARY__ is not already defined, either we are being used
   28:    standalone, or this is the first header included in the source file.
   29:    If we are being used with glibc, we need to include <features.h>, but
   30:    that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
   31:    not defined, include <ctype.h>, which will pull in <features.h> for us
   32:    if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
   33:    doesn't flood the namespace with stuff the way some other headers do.)  */
   34: #if !defined __GNU_LIBRARY__
   35: # include <ctype.h>
   36: #endif
   37: 
   38: #ifndef __THROW
   39: # ifndef __GNUC_PREREQ
   40: #  define __GNUC_PREREQ(maj, min) (0)
   41: # endif
   42: # if defined __cplusplus && __GNUC_PREREQ (2,8)
   43: #  define __THROW       throw ()
   44: # else
   45: #  define __THROW
   46: # endif
   47: #endif
   48: 
   49: #ifdef  __cplusplus
   50: extern "C" {
   51: #endif
   52: 
   53: /* For communication from `getopt' to the caller.
   54:    When `getopt' finds an option that takes an argument,
   55:    the argument value is returned here.
   56:    Also, when `ordering' is RETURN_IN_ORDER,
   57:    each non-option ARGV-element is returned here.  */
   58: 
   59: extern char *optarg;
   60: 
   61: /* Index in ARGV of the next element to be scanned.
   62:    This is used for communication to and from the caller
   63:    and for communication between successive calls to `getopt'.
   64: 
   65:    On entry to `getopt', zero means this is the first call; initialize.
   66: 
   67:    When `getopt' returns -1, this is the index of the first of the
   68:    non-option elements that the caller should itself scan.
   69: 
   70:    Otherwise, `optind' communicates from one call to the next
   71:    how much of ARGV has been scanned so far.  */
   72: 
   73: extern int optind;
   74: 
   75: /* Callers store zero here to inhibit the error message `getopt' prints
   76:    for unrecognized options.  */
   77: 
   78: extern int opterr;
   79: 
   80: /* Set to an option character which was unrecognized.  */
   81: 
   82: extern int optopt;
   83: 
   84: #ifndef __need_getopt
   85: /* Describe the long-named options requested by the application.
   86:    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
   87:    of `struct option' terminated by an element containing a name which is
   88:    zero.
   89: 
   90:    The field `has_arg' is:
   91:    no_argument          (or 0) if the option does not take an argument,
   92:    required_argument    (or 1) if the option requires an argument,
   93:    optional_argument    (or 2) if the option takes an optional argument.
   94: 
   95:    If the field `flag' is not NULL, it points to a variable that is set
   96:    to the value given in the field `val' when the option is found, but
   97:    left unchanged if the option is not found.
   98: 
   99:    To have a long-named option do something other than set an `int' to
  100:    a compiled-in constant, such as set a value from `optarg', set the
  101:    option's `flag' field to zero and its `val' field to a nonzero
  102:    value (the equivalent single-letter option character, if there is
  103:    one).  For long options that have a zero `flag' field, `getopt'
  104:    returns the contents of the `val' field.  */
  105: 
  106: struct option
  107: {
  108:   const char *name;
  109:   /* has_arg can't be an enum because some compilers complain about
  110:      type mismatches in all the code that assumes it is an int.  */
  111:   int has_arg;
  112:   int *flag;
  113:   int val;
  114: };
  115: 
  116: /* Names for the values of the `has_arg' field of `struct option'.  */
  117: 
  118: # define no_argument            0
  119: # define required_argument      1
  120: # define optional_argument      2
  121: #endif  /* need getopt */
  122: 
  123: 
  124: /* Get definitions and prototypes for functions to process the
  125:    arguments in ARGV (ARGC of them, minus the program name) for
  126:    options given in OPTS.
  127: 
  128:    Return the option character from OPTS just read.  Return -1 when
  129:    there are no more options.  For unrecognized options, or options
  130:    missing arguments, `optopt' is set to the option letter, and '?' is
  131:    returned.
  132: 
  133:    The OPTS string is a list of characters which are recognized option
  134:    letters, optionally followed by colons, specifying that that letter
  135:    takes an argument, to be placed in `optarg'.
  136: 
  137:    If a letter in OPTS is followed by two colons, its argument is
  138:    optional.  This behavior is specific to the GNU `getopt'.
  139: 
  140:    The argument `--' causes premature termination of argument
  141:    scanning, explicitly telling `getopt' that there are no more
  142:    options.
  143: 
  144:    If OPTS begins with `--', then non-option arguments are treated as
  145:    arguments to the option '\0'.  This behavior is specific to the GNU
  146:    `getopt'.  */
  147: 
  148: #ifdef __GNU_LIBRARY__
  149: /* Many other libraries have conflicting prototypes for getopt, with
  150:    differences in the consts, in stdlib.h.  To avoid compilation
  151:    errors, only prototype getopt for the GNU C library.  */
  152: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
  153:        __THROW;
  154: #else /* not __GNU_LIBRARY__ */
  155: extern int getopt ();
  156: #endif /* __GNU_LIBRARY__ */
  157: 
  158: #ifndef __need_getopt
  159: extern int getopt_long (int ___argc, char *const *___argv,
  160:                         const char *__shortopts,
  161:                         const struct option *__longopts, int *__longind)
  162:        __THROW;
  163: extern int getopt_long_only (int ___argc, char *const *___argv,
  164:                              const char *__shortopts,
  165:                              const struct option *__longopts, int *__longind)
  166:        __THROW;
  167: 
  168: #endif
  169: 
  170: #ifdef  __cplusplus
  171: }
  172: #endif
  173: 
  174: /* Make sure we later can get all the definitions and declarations.  */
  175: #undef __need_getopt
  176: 
  177: #endif /* getopt.h */
Syntax (Markdown)