~ubuntu-branches/ubuntu/natty/bc/natty

« back to all changes in this revision

Viewing changes to h/getopt.h

  • Committer: Bazaar Package Importer
  • Author(s): John Hasler
  • Date: 2007-12-02 14:46:56 UTC
  • mto: (3.2.1 sid)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: james.westby@ubuntu.com-20071202144656-vz98qh9dd1zwdyny
Tags: upstream-1.06.94
ImportĀ upstreamĀ versionĀ 1.06.94

Show diffs side-by-side

added added

removed removed

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