Mercurial > hg > octave-shane > gnulib-hg
annotate lib/getopt.in.h @ 17255:d81be792518a
update from texinfo
author | Karl Berry <karl@freefriends.org> |
---|---|
date | Tue, 01 Jan 2013 15:51:49 -0800 |
parents | e542fd46ad6f |
children | b83fbc95abc4 |
rev | line source |
---|---|
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Declarations for getopt. |
17249
e542fd46ad6f
maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents:
16235
diff
changeset
|
2 Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2013 Free Software |
12559
c2cbabec01dd
update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents:
12422
diff
changeset
|
3 Foundation, Inc. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
4 This file is part of the GNU C Library. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9250
diff
changeset
|
6 This program is free software: you can redistribute it and/or modify |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
7 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9250
diff
changeset
|
8 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9250
diff
changeset
|
9 (at your option) any later version. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 This program is distributed in the hope that it will be useful, |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 GNU General Public License for more details. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
15 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9250
diff
changeset
|
16 You should have received a copy of the GNU General Public License |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9250
diff
changeset
|
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 |
14840
5f709022a256
Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents:
14274
diff
changeset
|
19 #ifndef _@GUARD_PREFIX@_GETOPT_H |
13094
2ed0fc659db8
Emit #pragma system_header after the inclusion guard, not before.
Bruno Haible <bruno@clisp.org>
parents:
13055
diff
changeset
|
20 |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
21 #if __GNUC__ >= 3 |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
22 @PRAGMA_SYSTEM_HEADER@ |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
23 #endif |
13761
a19ace3ba849
Avoid line length limitation from HP NonStop system header files.
Bruno Haible <bruno@clisp.org>
parents:
13094
diff
changeset
|
24 @PRAGMA_COLUMNS@ |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
25 |
12123
4ace69c0279d
getopt: fix compilation on darwin
Eric Blake <ebb9@byu.net>
parents:
12118
diff
changeset
|
26 /* The include_next requires a split double-inclusion guard. We must |
4ace69c0279d
getopt: fix compilation on darwin
Eric Blake <ebb9@byu.net>
parents:
12118
diff
changeset
|
27 also inform the replacement unistd.h to not recursively use |
4ace69c0279d
getopt: fix compilation on darwin
Eric Blake <ebb9@byu.net>
parents:
12118
diff
changeset
|
28 <getopt.h>; our definitions will be present soon enough. */ |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
29 #if @HAVE_GETOPT_H@ |
12123
4ace69c0279d
getopt: fix compilation on darwin
Eric Blake <ebb9@byu.net>
parents:
12118
diff
changeset
|
30 # define _GL_SYSTEM_GETOPT |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
31 # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ |
12123
4ace69c0279d
getopt: fix compilation on darwin
Eric Blake <ebb9@byu.net>
parents:
12118
diff
changeset
|
32 # undef _GL_SYSTEM_GETOPT |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
33 #endif |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
34 |
14840
5f709022a256
Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents:
14274
diff
changeset
|
35 #ifndef _@GUARD_PREFIX@_GETOPT_H |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
36 |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 #ifndef __need_getopt |
14840
5f709022a256
Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents:
14274
diff
changeset
|
38 # define _@GUARD_PREFIX@_GETOPT_H 1 |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 /* Standalone applications should #define __GETOPT_PREFIX to an |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 identifier that prefixes the external functions and variables |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 defined in this header. When this happens, include the |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 headers that might declare getopt so that they will not cause |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
45 confusion if included after this file (if the system had <getopt.h>, |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
46 we have already included it). Then systematically rename |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 identifiers so that they do not collide with the system functions |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 and variables. Renaming avoids problems with some compilers and |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 linkers. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 #if defined __GETOPT_PREFIX && !defined __need_getopt |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
51 # if !@HAVE_GETOPT_H@ |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
52 # include <stdlib.h> |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
53 # include <stdio.h> |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
54 # include <unistd.h> |
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
55 # endif |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
56 # undef __need_getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
57 # undef getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
58 # undef getopt_long |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
59 # undef getopt_long_only |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
60 # undef optarg |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
61 # undef opterr |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
62 # undef optind |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
63 # undef optopt |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
64 # undef option |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
65 # define __GETOPT_CONCAT(x, y) x ## y |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
66 # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
67 # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
68 # define getopt __GETOPT_ID (getopt) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
69 # define getopt_long __GETOPT_ID (getopt_long) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
70 # define getopt_long_only __GETOPT_ID (getopt_long_only) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
71 # define optarg __GETOPT_ID (optarg) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
72 # define opterr __GETOPT_ID (opterr) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
73 # define optind __GETOPT_ID (optind) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
74 # define optopt __GETOPT_ID (optopt) |
12070
f098f1865179
getopt: fix inclusion guards for cygwin
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
75 # define option __GETOPT_ID (option) |
12118
ef31ab094483
getopt: avoid clash with FreeBSD _getopt_internal
Eric Blake <ebb9@byu.net>
parents:
12074
diff
changeset
|
76 # define _getopt_internal __GETOPT_ID (getopt_internal) |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
77 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
78 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
79 /* Standalone applications get correct prototypes for getopt_long and |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 getopt_long_only; they declare "char **argv". libc uses prototypes |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 with "char *const *argv" that are incorrect because getopt_long and |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 getopt_long_only can permute argv; this is required for backward |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 compatibility (e.g., for LSB 2.0.1). |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
85 This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 but it caused redefinition warnings if both unistd.h and getopt.h were |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 included, since unistd.h includes getopt.h having previously defined |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 __need_getopt. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 The only place where __getopt_argv_const is used is in definitions |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 of getopt_long and getopt_long_only below, but these are visible |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
92 only if __need_getopt is not defined, so it is quite safe to rewrite |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
93 the conditional as follows: |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
94 */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 #if !defined __need_getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
96 # if defined __GETOPT_PREFIX |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
97 # define __getopt_argv_const /* empty */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
98 # else |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
99 # define __getopt_argv_const const |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 # endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
101 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 /* If __GNU_LIBRARY__ is not already defined, either we are being used |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 standalone, or this is the first header included in the source file. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 If we are being used with glibc, we need to include <features.h>, but |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 that does not exist if we are standalone. So: if __GNU_LIBRARY__ is |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 not defined, include <ctype.h>, which will pull in <features.h> for us |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 if it's from glibc. (Why ctype.h? It's guaranteed to exist and it |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 doesn't flood the namespace with stuff the way some other headers do.) */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
110 #if !defined __GNU_LIBRARY__ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
111 # include <ctype.h> |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
112 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
113 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
114 #ifndef __THROW |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
115 # ifndef __GNUC_PREREQ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
116 # define __GNUC_PREREQ(maj, min) (0) |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
117 # endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 # if defined __cplusplus && __GNUC_PREREQ (2,8) |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
119 # define __THROW throw () |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
120 # else |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
121 # define __THROW |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
122 # endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
124 |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
125 /* The definition of _GL_ARG_NONNULL is copied here. */ |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
126 |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 #ifdef __cplusplus |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 extern "C" { |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
131 /* For communication from 'getopt' to the caller. |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
132 When 'getopt' finds an option that takes an argument, |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
133 the argument value is returned here. |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
134 Also, when 'ordering' is RETURN_IN_ORDER, |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
135 each non-option ARGV-element is returned here. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
137 extern char *optarg; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
138 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
139 /* Index in ARGV of the next element to be scanned. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 This is used for communication to and from the caller |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
141 and for communication between successive calls to 'getopt'. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
142 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
143 On entry to 'getopt', zero means this is the first call; initialize. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
145 When 'getopt' returns -1, this is the index of the first of the |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
146 non-option elements that the caller should itself scan. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
148 Otherwise, 'optind' communicates from one call to the next |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
149 how much of ARGV has been scanned so far. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
150 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
151 extern int optind; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
152 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
153 /* Callers store zero here to inhibit the error message 'getopt' prints |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
154 for unrecognized options. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
155 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
156 extern int opterr; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
157 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
158 /* Set to an option character which was unrecognized. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
159 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
160 extern int optopt; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
161 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
162 #ifndef __need_getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
163 /* Describe the long-named options requested by the application. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
164 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
165 of 'struct option' terminated by an element containing a name which is |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
166 zero. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
167 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
168 The field 'has_arg' is: |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
169 no_argument (or 0) if the option does not take an argument, |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
170 required_argument (or 1) if the option requires an argument, |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
171 optional_argument (or 2) if the option takes an optional argument. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
172 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
173 If the field 'flag' is not NULL, it points to a variable that is set |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
174 to the value given in the field 'val' when the option is found, but |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
175 left unchanged if the option is not found. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
176 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
177 To have a long-named option do something other than set an 'int' to |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
178 a compiled-in constant, such as set a value from 'optarg', set the |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
179 option's 'flag' field to zero and its 'val' field to a nonzero |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
180 value (the equivalent single-letter option character, if there is |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
181 one). For long options that have a zero 'flag' field, 'getopt' |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
182 returns the contents of the 'val' field. */ |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
183 |
14274
da5595160b9f
Allow multiple gnulib generated replacements to coexist.
Bruno Haible <bruno@clisp.org>
parents:
14079
diff
changeset
|
184 # if !GNULIB_defined_struct_option |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
185 struct option |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
186 { |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
187 const char *name; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
188 /* has_arg can't be an enum because some compilers complain about |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
189 type mismatches in all the code that assumes it is an int. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
190 int has_arg; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
191 int *flag; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
192 int val; |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
193 }; |
14274
da5595160b9f
Allow multiple gnulib generated replacements to coexist.
Bruno Haible <bruno@clisp.org>
parents:
14079
diff
changeset
|
194 # define GNULIB_defined_struct_option 1 |
da5595160b9f
Allow multiple gnulib generated replacements to coexist.
Bruno Haible <bruno@clisp.org>
parents:
14079
diff
changeset
|
195 # endif |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
196 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
197 /* Names for the values of the 'has_arg' field of 'struct option'. */ |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
198 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
199 # define no_argument 0 |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
200 # define required_argument 1 |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
201 # define optional_argument 2 |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
202 #endif /* need getopt */ |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
203 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
204 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
205 /* Get definitions and prototypes for functions to process the |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
206 arguments in ARGV (ARGC of them, minus the program name) for |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
207 options given in OPTS. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
208 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
209 Return the option character from OPTS just read. Return -1 when |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
210 there are no more options. For unrecognized options, or options |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
211 missing arguments, 'optopt' is set to the option letter, and '?' is |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
212 returned. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
213 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
214 The OPTS string is a list of characters which are recognized option |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
215 letters, optionally followed by colons, specifying that that letter |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
216 takes an argument, to be placed in 'optarg'. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
217 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
218 If a letter in OPTS is followed by two colons, its argument is |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
219 optional. This behavior is specific to the GNU 'getopt'. |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
220 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
221 The argument '--' causes premature termination of argument |
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
222 scanning, explicitly telling 'getopt' that there are no more |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
223 options. |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
224 |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
225 If OPTS begins with '-', then non-option arguments are treated as |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
226 arguments to the option '\1'. This behavior is specific to the GNU |
16235
18a38c9615f0
In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents:
16201
diff
changeset
|
227 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
228 the environment, then do not permute arguments. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
229 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
230 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
231 __THROW _GL_ARG_NONNULL ((2, 3)); |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
232 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
233 #ifndef __need_getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
234 extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
235 const char *__shortopts, |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
236 const struct option *__longopts, int *__longind) |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
237 __THROW _GL_ARG_NONNULL ((2, 3)); |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
238 extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
239 const char *__shortopts, |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12123
diff
changeset
|
240 const struct option *__longopts, int *__longind) |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
241 __THROW _GL_ARG_NONNULL ((2, 3)); |
9250
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
242 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
243 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
244 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
245 #ifdef __cplusplus |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
246 } |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
247 #endif |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
248 |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
249 /* Make sure we later can get all the definitions and declarations. */ |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
250 #undef __need_getopt |
6e379cd631c3
Rename getopt_.h to getopt.in.h.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
251 |
14840
5f709022a256
Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents:
14274
diff
changeset
|
252 #endif /* _@GUARD_PREFIX@_GETOPT_H */ |
5f709022a256
Allow multiple gnulib generated include files to be combined.
Bruno Haible <bruno@clisp.org>
parents:
14274
diff
changeset
|
253 #endif /* _@GUARD_PREFIX@_GETOPT_H */ |