~ubuntu-branches/ubuntu/hardy/renameutils/hardy

« back to all changes in this revision

Viewing changes to lib/getopt_.h

  • Committer: Bazaar Package Importer
  • Author(s): Francois Marier
  • Date: 2006-07-21 16:39:15 UTC
  • mfrom: (1.1.4 edgy)
  • Revision ID: james.westby@ubuntu.com-20060721163915-k3kqs080hol8uw1n
Tags: 0.8.1-4
* Enable large file support on 32-bit platforms (closes: #377845)
* Bump Standards-Version up to 3.7.2 (no changes)

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
   You should have received a copy of the GNU General Public License along
17
17
   with this program; if not, write to the Free Software Foundation,
18
 
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
18
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
19
19
 
20
20
#ifndef _GETOPT_H
21
21
 
23
23
# define _GETOPT_H 1
24
24
#endif
25
25
 
 
26
/* Standalone applications should #define __GETOPT_PREFIX to an
 
27
   identifier that prefixes the external functions and variables
 
28
   defined in this header.  When this happens, include the
 
29
   headers that might declare getopt so that they will not cause
 
30
   confusion if included after this file.  Then systematically rename
 
31
   identifiers so that they do not collide with the system functions
 
32
   and variables.  Renaming avoids problems with some compilers and
 
33
   linkers.  */
 
34
#if defined __GETOPT_PREFIX && !defined __need_getopt
 
35
# include <stdlib.h>
 
36
# include <stdio.h>
 
37
# if HAVE_UNISTD_H
 
38
#  include <unistd.h>
 
39
# endif
 
40
# undef __need_getopt
 
41
# undef getopt
 
42
# undef getopt_long
 
43
# undef getopt_long_only
 
44
# undef optarg
 
45
# undef opterr
 
46
# undef optind
 
47
# undef optopt
 
48
# define __GETOPT_CONCAT(x, y) x ## y
 
49
# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
 
50
# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
 
51
# define getopt __GETOPT_ID (getopt)
 
52
# define getopt_long __GETOPT_ID (getopt_long)
 
53
# define getopt_long_only __GETOPT_ID (getopt_long_only)
 
54
# define optarg __GETOPT_ID (optarg)
 
55
# define opterr __GETOPT_ID (opterr)
 
56
# define optind __GETOPT_ID (optind)
 
57
# define optopt __GETOPT_ID (optopt)
 
58
#endif
 
59
 
 
60
/* Standalone applications get correct prototypes for getopt_long and
 
61
   getopt_long_only; they declare "char **argv".  libc uses prototypes
 
62
   with "char *const *argv" that are incorrect because getopt_long and
 
63
   getopt_long_only can permute argv; this is required for backward
 
64
   compatibility (e.g., for LSB 2.0.1).
 
65
 
 
66
   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
 
67
   but it caused redefinition warnings if both unistd.h and getopt.h were
 
68
   included, since unistd.h includes getopt.h having previously defined
 
69
   __need_getopt.
 
70
 
 
71
   The only place where __getopt_argv_const is used is in definitions
 
72
   of getopt_long and getopt_long_only below, but these are visible
 
73
   only if __need_getopt is not defined, so it is quite safe to rewrite
 
74
   the conditional as follows:
 
75
*/
 
76
#if !defined __need_getopt
 
77
# if defined __GETOPT_PREFIX
 
78
#  define __getopt_argv_const /* empty */
 
79
# else
 
80
#  define __getopt_argv_const const
 
81
# endif
 
82
#endif
 
83
 
26
84
/* If __GNU_LIBRARY__ is not already defined, either we are being used
27
85
   standalone, or this is the first header included in the source file.
28
86
   If we are being used with glibc, we need to include <features.h>, but
89
147
   The field `has_arg' is:
90
148
   no_argument          (or 0) if the option does not take an argument,
91
149
   required_argument    (or 1) if the option requires an argument,
92
 
   optional_argument    (or 2) if the option takes an optional argument.
 
150
   optional_argument    (or 2) if the option takes an optional argument.
93
151
 
94
152
   If the field `flag' is not NULL, it points to a variable that is set
95
153
   to the value given in the field `val' when the option is found, but
144
202
   arguments to the option '\0'.  This behavior is specific to the GNU
145
203
   `getopt'.  */
146
204
 
147
 
#ifdef __GNU_LIBRARY__
148
 
/* Many other libraries have conflicting prototypes for getopt, with
149
 
   differences in the consts, in stdlib.h.  To avoid compilation
150
 
   errors, only prototype getopt for the GNU C library.  */
151
205
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
152
206
       __THROW;
153
 
#else /* not __GNU_LIBRARY__ */
154
 
extern int getopt ();
155
 
#endif /* __GNU_LIBRARY__ */
156
207
 
157
208
#ifndef __need_getopt
158
 
extern int getopt_long (int ___argc, char *const *___argv,
 
209
extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
159
210
                        const char *__shortopts,
160
211
                        const struct option *__longopts, int *__longind)
161
212
       __THROW;
162
 
extern int getopt_long_only (int ___argc, char *const *___argv,
 
213
extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
163
214
                             const char *__shortopts,
164
215
                             const struct option *__longopts, int *__longind)
165
216
       __THROW;