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

glibc/2.7/posix/getopt_int.h

    1: /* Internal 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_INT_H
   22: #define _GETOPT_INT_H   1
   23: 
   24: extern int _getopt_internal (int ___argc, char *const *___argv,
   25:                              const char *__shortopts,
   26:                              const struct option *__longopts, int *__longind,
   27:                              int __long_only);
   28: 
   29: ^L
   30: /* Reentrant versions which can handle parsing multiple argument
   31:    vectors at the same time.  */
   32: 
   33: /* Data type for reentrant functions.  */
   34: struct _getopt_data
   35: {
   36:   /* These have exactly the same meaning as the corresponding global
   37:      variables, except that they are used for the reentrant
   38:      versions of getopt.  */
   39:   int optind;
   40:   int opterr;
   41:   int optopt;
   42:   char *optarg;
   43: 
   44:   /* Internal members.  */
   45: 
   46:   /* True if the internal members have been initialized.  */
   47:   int __initialized;
   48: 
   49:   /* The next char to be scanned in the option-element
   50:      in which the last option character we returned was found.
   51:      This allows us to pick up the scan where we left off.
   52: 
   53:      If this is zero, or a null string, it means resume the scan
   54:      by advancing to the next ARGV-element.  */
   55:   char *__nextchar;
   56: 
   57:   /* Describe how to deal with options that follow non-option ARGV-elements.
   58: 
   59:      If the caller did not specify anything,
   60:      the default is REQUIRE_ORDER if the environment variable
   61:      POSIXLY_CORRECT is defined, PERMUTE otherwise.
   62: 
   63:      REQUIRE_ORDER means don't recognize them as options;
   64:      stop option processing when the first non-option is seen.
   65:      This is what Unix does.
   66:      This mode of operation is selected by either setting the environment
   67:      variable POSIXLY_CORRECT, or using `+' as the first character
   68:      of the list of option characters.
   69: 
   70:      PERMUTE is the default.  We permute the contents of ARGV as we
   71:      scan, so that eventually all the non-options are at the end.
   72:      This allows options to be given in any order, even with programs
   73:      that were not written to expect this.
   74: 
   75:      RETURN_IN_ORDER is an option available to programs that were
   76:      written to expect options and other ARGV-elements in any order
   77:      and that care about the ordering of the two.  We describe each
   78:      non-option ARGV-element as if it were the argument of an option
   79:      with character code 1.  Using `-' as the first character of the
   80:      list of option characters selects this mode of operation.
   81: 
   82:      The special argument `--' forces an end of option-scanning regardless
   83:      of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
   84:      `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
   85: 
   86:   enum
   87:     {
   88:       REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
   89:     } __ordering;
   90: 
   91:   /* If the POSIXLY_CORRECT environment variable is set.  */
   92:   int __posixly_correct;
   93: 
   94: 
   95:   /* Handle permutation of arguments.  */
   96: 
   97:   /* Describe the part of ARGV that contains non-options that have
   98:      been skipped.  `first_nonopt' is the index in ARGV of the first
   99:      of them; `last_nonopt' is the index after the last of them.  */
  100: 
  101:   int __first_nonopt;
  102:   int __last_nonopt;
  103: 
  104: #if defined _LIBC && defined USE_NONOPTION_FLAGS
  105:   int __nonoption_flags_max_len;
  106:   int __nonoption_flags_len;
  107: # endif
  108: };
  109: 
  110: /* The initializer is necessary to set OPTIND and OPTERR to their
  111:    default values and to clear the initialization flag.  */
  112: #define _GETOPT_DATA_INITIALIZER        { 1, 1 }
  113: 
  114: extern int _getopt_internal_r (int ___argc, char *const *___argv,
  115:                                const char *__shortopts,
  116:                                const struct option *__longopts, int *__longind,
  117:                                int __long_only, struct _getopt_data *__data);
  118: 
  119: extern int _getopt_long_r (int ___argc, char *const *___argv,
  120:                            const char *__shortopts,
  121:                            const struct option *__longopts, int *__longind,
  122:                            struct _getopt_data *__data);
  123: 
  124: extern int _getopt_long_only_r (int ___argc, char *const *___argv,
  125:                                 const char *__shortopts,
  126:                                 const struct option *__longopts,
  127:                                 int *__longind,
  128:                                 struct _getopt_data *__data);
  129: 
  130: #endif /* getopt_int.h */
Syntax (Markdown)