~ubuntu-branches/ubuntu/breezy/gettext/breezy

« back to all changes in this revision

Viewing changes to gettext-tools/lib/getopt.h

  • Committer: Bazaar Package Importer
  • Author(s): Santiago Vila
  • Date: 2004-03-14 17:40:02 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040314174002-p1ad5ldve1hqzhye
Tags: 0.14.1-2
* Added libexpat1-dev to Build-Depends, for glade support.
* Added libc0.1-dev to Build-Depends, for GNU/kFreeBSD.
* Removed special-casing of knetbsd-gnu in debian/rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Declarations for getopt.
 
2
   Copyright (C) 1989-1994, 1996-1999, 2001, 2003 Free Software Foundation, Inc.
 
3
   This file is part of the GNU C Library.
 
4
 
 
5
   The GNU C Library is free software; you can redistribute it and/or
 
6
   modify it under the terms of the GNU Lesser General Public
 
7
   License as published by the Free Software Foundation; either
 
8
   version 2.1 of the License, or (at your option) any later version.
 
9
 
 
10
   The GNU C Library is distributed in the hope that it will be useful,
 
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
   Lesser General Public License for more details.
 
14
 
 
15
   You should have received a copy of the GNU Lesser General Public
 
16
   License along with the GNU C Library; if not, write to the Free
 
17
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 
18
   02111-1307 USA.  */
 
19
 
 
20
#ifndef _GETOPT_H
 
21
 
 
22
#ifndef __need_getopt
 
23
# define _GETOPT_H 1
 
24
#endif
 
25
 
 
26
/* Ensure that DLL_VARIABLE is defined.  Since on OSF/1 4.0 and Irix 6.5
 
27
   <stdlib.h> includes <getopt.h>, and <config.h> is not a prerequisite for
 
28
   using <stdlib.h>, this file can be included without a prior
 
29
   "#include <config.h>".  */
 
30
#if HAVE_CONFIG_H
 
31
# include <config.h>
 
32
#endif
 
33
 
 
34
/* If __GNU_LIBRARY__ is not already defined, either we are being used
 
35
   standalone, or this is the first header included in the source file.
 
36
   If we are being used with glibc, we need to include <features.h>, but
 
37
   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
 
38
   not defined, include <ctype.h>, which will pull in <features.h> for us
 
39
   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
 
40
   doesn't flood the namespace with stuff the way some other headers do.)  */
 
41
#if !defined __GNU_LIBRARY__
 
42
# include <ctype.h>
 
43
#endif
 
44
 
 
45
#ifdef  __cplusplus
 
46
extern "C" {
 
47
#endif
 
48
 
 
49
/* For communication from `getopt' to the caller.
 
50
   When `getopt' finds an option that takes an argument,
 
51
   the argument value is returned here.
 
52
   Also, when `ordering' is RETURN_IN_ORDER,
 
53
   each non-option ARGV-element is returned here.  */
 
54
 
 
55
extern DLL_VARIABLE char *optarg;
 
56
 
 
57
/* Index in ARGV of the next element to be scanned.
 
58
   This is used for communication to and from the caller
 
59
   and for communication between successive calls to `getopt'.
 
60
 
 
61
   On entry to `getopt', zero means this is the first call; initialize.
 
62
 
 
63
   When `getopt' returns -1, this is the index of the first of the
 
64
   non-option elements that the caller should itself scan.
 
65
 
 
66
   Otherwise, `optind' communicates from one call to the next
 
67
   how much of ARGV has been scanned so far.  */
 
68
 
 
69
extern DLL_VARIABLE int optind;
 
70
 
 
71
/* Callers store zero here to inhibit the error message `getopt' prints
 
72
   for unrecognized options.  */
 
73
 
 
74
extern DLL_VARIABLE int opterr;
 
75
 
 
76
/* Set to an option character which was unrecognized.  */
 
77
 
 
78
extern DLL_VARIABLE int optopt;
 
79
 
 
80
#ifndef __need_getopt
 
81
/* Describe the long-named options requested by the application.
 
82
   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
 
83
   of `struct option' terminated by an element containing a name which is
 
84
   zero.
 
85
 
 
86
   The field `has_arg' is:
 
87
   no_argument          (or 0) if the option does not take an argument,
 
88
   required_argument    (or 1) if the option requires an argument,
 
89
   optional_argument    (or 2) if the option takes an optional argument.
 
90
 
 
91
   If the field `flag' is not NULL, it points to a variable that is set
 
92
   to the value given in the field `val' when the option is found, but
 
93
   left unchanged if the option is not found.
 
94
 
 
95
   To have a long-named option do something other than set an `int' to
 
96
   a compiled-in constant, such as set a value from `optarg', set the
 
97
   option's `flag' field to zero and its `val' field to a nonzero
 
98
   value (the equivalent single-letter option character, if there is
 
99
   one).  For long options that have a zero `flag' field, `getopt'
 
100
   returns the contents of the `val' field.  */
 
101
 
 
102
struct option
 
103
{
 
104
# if (defined __STDC__ && __STDC__) || defined __cplusplus
 
105
  const char *name;
 
106
# else
 
107
  char *name;
 
108
# endif
 
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
#if (defined __STDC__ && __STDC__) || defined __cplusplus
 
149
# ifdef __GNU_LIBRARY__
 
150
/* Many other libraries have conflicting prototypes for getopt, with
 
151
   differences in the consts, in stdlib.h.  To avoid compilation
 
152
   errors, only prototype getopt for the GNU C library.  */
 
153
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
 
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
extern int getopt_long_only (int ___argc, char *const *___argv,
 
163
                             const char *__shortopts,
 
164
                             const struct option *__longopts, int *__longind);
 
165
 
 
166
/* Internal only.  Users should not call this directly.  */
 
167
extern int _getopt_internal (int ___argc, char *const *___argv,
 
168
                             const char *__shortopts,
 
169
                             const struct option *__longopts, int *__longind,
 
170
                             int __long_only);
 
171
# endif
 
172
#else /* not __STDC__ */
 
173
extern int getopt ();
 
174
# ifndef __need_getopt
 
175
extern int getopt_long ();
 
176
extern int getopt_long_only ();
 
177
 
 
178
extern int _getopt_internal ();
 
179
# endif
 
180
#endif /* __STDC__ */
 
181
 
 
182
#ifdef  __cplusplus
 
183
}
 
184
#endif
 
185
 
 
186
/* Make sure we later can get all the definitions and declarations.  */
 
187
#undef __need_getopt
 
188
 
 
189
#endif /* getopt.h */