]> sjero.net Git - iperf/blob - include/gnu_getopt.h
Original 2.0.2 iperf sources
[iperf] / include / gnu_getopt.h
1 /* Declarations for gnu_getopt.
2    Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
3
4    This file is part of the GNU C Library.  Its master source is NOT part of
5    the C library, however.  The master source lives in /gd/gnu/lib.
6
7    The GNU C Library is free software; you can redistribute it and/or
8    modify it under the terms of the GNU Library General Public License as
9    published by the Free Software Foundation; either version 2 of the
10    License, or (at your option) any later version.
11
12    The GNU C Library is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Library General Public License for more details.
16
17    You should have received a copy of the GNU Library General Public
18    License along with the GNU C Library; see the file COPYING.LIB.  If not,
19    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20    Boston, MA 02111-1307, USA.  */
21
22 /*
23  * modified July 9, 1999 by mark gates <mgates@nlanr.net>
24  *          Dec 17, 1999
25  *
26  * renamed all functions and variables by prepending "gnu_"
27  * removed/redid a bunch of stuff under the assumption we're
28  *   using a modern standard C compiler.
29  *
30  * $Id: gnu_getopt.h,v 1.1.1.1 2004/05/18 01:50:44 kgibbs Exp $
31  */
32
33 #ifndef _GETOPT_H
34     #define _GETOPT_H 1
35
36     #ifdef      __cplusplus
37 extern "C" {
38 #endif
39
40 /* For communication from `gnu_getopt' to the caller.
41    When `gnu_getopt' finds an option that takes an argument,
42    the argument value is returned here.
43    Also, when `ordering' is RETURN_IN_ORDER,
44    each non-option ARGV-element is returned here.  */
45
46 extern char *gnu_optarg;
47
48 /* Index in ARGV of the next element to be scanned.
49    This is used for communication to and from the caller
50    and for communication between successive calls to `gnu_getopt'.
51
52    On entry to `gnu_getopt', zero means this is the first call; initialize.
53
54    When `gnu_getopt' returns -1, this is the index of the first of the
55    non-option elements that the caller should itself scan.
56
57    Otherwise, `gnu_optind' communicates from one call to the next
58    how much of ARGV has been scanned so far.  */
59
60 extern int gnu_optind;
61
62 /* Callers store zero here to inhibit the error message `gnu_getopt' prints
63    for unrecognized options.  */
64
65 extern int gnu_opterr;
66
67 /* Set to an option character which was unrecognized.  */
68
69 extern int gnu_optopt;
70
71 /* Describe the long-named options requested by the application.
72    The LONG_OPTIONS argument to gnu_getopt_long or getopt_long_only is a vector
73    of `struct option' terminated by an element containing a name which is
74    zero.
75
76    The field `has_arg' is:
77    no_argument          (or 0) if the option does not take an argument,
78    required_argument    (or 1) if the option requires an argument,
79    optional_argument    (or 2) if the option takes an optional argument.
80
81    If the field `flag' is not NULL, it points to a variable that is set
82    to the value given in the field `val' when the option is found, but
83    left unchanged if the option is not found.
84
85    To have a long-named option do something other than set an `int' to
86    a compiled-in constant, such as set a value from `gnu_optarg', set the
87    option's `flag' field to zero and its `val' field to a nonzero
88    value (the equivalent single-letter option character, if there is
89    one).  For long options that have a zero `flag' field, `gnu_getopt'
90    returns the contents of the `val' field.  */
91
92 /* has_arg can't be an enum because some compilers complain about
93    type mismatches in all the code that assumes it is an int.  */
94
95 struct option {
96     const char *name;
97     int has_arg;
98     int *flag;
99     int val;
100 };
101
102 /* Names for the values of the `has_arg' field of `struct option'.  */
103
104 #define no_argument                 0
105 #define required_argument       1
106 #define optional_argument       2
107
108 int gnu_getopt( int argc,
109                 char *const *argv,
110                 const char *shortopts );
111
112 int gnu_getopt_long( int argc,
113                      char *const *argv,
114                      const char *shortopts,
115                      const struct option *longopts,
116                      int *longind );
117
118 int gnu_getopt_long_only( int argc,
119                           char *const *argv,
120                           const char *shortopts,
121                           const struct option *longopts,
122                           int *longind );
123
124 /* Internal only.  Users should not call this directly.  */
125 int _gnu_getopt_internal( int argc,
126                           char *const *argv,
127                           const char *shortopts,
128                           const struct option *longopts,
129                           int *longind,
130                           int long_only );
131
132 #ifdef  __cplusplus
133 } /* end extern "C" */
134     #endif
135
136 #endif /* _GETOPT_H */