Merge from gnulib
This merges some getopt fixes from Zack Weinberg, and affects only
non-GNUish platforms. It incorporates:
2017-04-06 getopt-gnu: omit some duplicate code
2017-04-06 getopt-posix: use angle-bracket include
2017-04-06 getopt: annotate files with relationship to glibc
2017-04-06 getopt: split up getopt.in.h and eliminate __need_getopt
2017-04-06 getopt: better handling of ambiguous options
2017-04-06 getopt: refactor long-option handling
2017-04-06 getopt: tidy up _getopt_initialize a bit
2017-04-06 getopt: merge from glibc: repetition reduction
2017-04-06 getopt: clean up error reporting
2017-04-06 getopt: fix fencepost error in ambiguous-W-option handling
2017-04-06 getopt: clean up getopt.c and getopt1.c file headers
2017-04-06 getopt: harmonize comments with glibc
2017-04-06 getopt: remove USE_NONOPTION_FLAGS
2017-04-06 getopt: tabify, in preparation for merge with glibc
2017-04-06 md5, sha1, sha256, sha512: Add comments re correctness
* build-aux/config.sub, doc/misc/texinfo.tex, lib/getopt.c:
* lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h, lib/md5.c:
* lib/md5.h, lib/sha1.c, lib/sha1.h, lib/sha256.c, lib/sha256.h:
* lib/sha512.c, lib/sha512.h, lib/unistd.in.h, m4/getopt.m4:
Copy from gnulib.
* lib/getopt_cdefs.in.h, lib/getopt_core.h, lib/getopt_ext.h:
* lib/getopt_pfx_core.h, lib/getopt_pfx_ext.h:
New files, taken from gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4:
Regenerate.
2017-04-06 23:29:36 +00:00
|
|
|
/* Declarations for getopt (basic, portable features only).
|
2021-01-01 09:13:56 +00:00
|
|
|
Copyright (C) 1989-2021 Free Software Foundation, Inc.
|
Merge from gnulib
This merges some getopt fixes from Zack Weinberg, and affects only
non-GNUish platforms. It incorporates:
2017-04-06 getopt-gnu: omit some duplicate code
2017-04-06 getopt-posix: use angle-bracket include
2017-04-06 getopt: annotate files with relationship to glibc
2017-04-06 getopt: split up getopt.in.h and eliminate __need_getopt
2017-04-06 getopt: better handling of ambiguous options
2017-04-06 getopt: refactor long-option handling
2017-04-06 getopt: tidy up _getopt_initialize a bit
2017-04-06 getopt: merge from glibc: repetition reduction
2017-04-06 getopt: clean up error reporting
2017-04-06 getopt: fix fencepost error in ambiguous-W-option handling
2017-04-06 getopt: clean up getopt.c and getopt1.c file headers
2017-04-06 getopt: harmonize comments with glibc
2017-04-06 getopt: remove USE_NONOPTION_FLAGS
2017-04-06 getopt: tabify, in preparation for merge with glibc
2017-04-06 md5, sha1, sha256, sha512: Add comments re correctness
* build-aux/config.sub, doc/misc/texinfo.tex, lib/getopt.c:
* lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h, lib/md5.c:
* lib/md5.h, lib/sha1.c, lib/sha1.h, lib/sha256.c, lib/sha256.h:
* lib/sha512.c, lib/sha512.h, lib/unistd.in.h, m4/getopt.m4:
Copy from gnulib.
* lib/getopt_cdefs.in.h, lib/getopt_core.h, lib/getopt_ext.h:
* lib/getopt_pfx_core.h, lib/getopt_pfx_ext.h:
New files, taken from gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4:
Regenerate.
2017-04-06 23:29:36 +00:00
|
|
|
This file is part of the GNU C Library and is also part of gnulib.
|
|
|
|
Patches to this file should be submitted to both projects.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 3 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public
|
|
|
|
License along with the GNU C Library; if not, see
|
2017-09-13 09:07:03 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
Merge from gnulib
This merges some getopt fixes from Zack Weinberg, and affects only
non-GNUish platforms. It incorporates:
2017-04-06 getopt-gnu: omit some duplicate code
2017-04-06 getopt-posix: use angle-bracket include
2017-04-06 getopt: annotate files with relationship to glibc
2017-04-06 getopt: split up getopt.in.h and eliminate __need_getopt
2017-04-06 getopt: better handling of ambiguous options
2017-04-06 getopt: refactor long-option handling
2017-04-06 getopt: tidy up _getopt_initialize a bit
2017-04-06 getopt: merge from glibc: repetition reduction
2017-04-06 getopt: clean up error reporting
2017-04-06 getopt: fix fencepost error in ambiguous-W-option handling
2017-04-06 getopt: clean up getopt.c and getopt1.c file headers
2017-04-06 getopt: harmonize comments with glibc
2017-04-06 getopt: remove USE_NONOPTION_FLAGS
2017-04-06 getopt: tabify, in preparation for merge with glibc
2017-04-06 md5, sha1, sha256, sha512: Add comments re correctness
* build-aux/config.sub, doc/misc/texinfo.tex, lib/getopt.c:
* lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h, lib/md5.c:
* lib/md5.h, lib/sha1.c, lib/sha1.h, lib/sha256.c, lib/sha256.h:
* lib/sha512.c, lib/sha512.h, lib/unistd.in.h, m4/getopt.m4:
Copy from gnulib.
* lib/getopt_cdefs.in.h, lib/getopt_core.h, lib/getopt_ext.h:
* lib/getopt_pfx_core.h, lib/getopt_pfx_ext.h:
New files, taken from gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4:
Regenerate.
2017-04-06 23:29:36 +00:00
|
|
|
|
|
|
|
#ifndef _GETOPT_CORE_H
|
|
|
|
#define _GETOPT_CORE_H 1
|
|
|
|
|
|
|
|
/* This header should not be used directly; include getopt.h or
|
|
|
|
unistd.h instead. Unlike most bits headers, it does not have
|
|
|
|
a protective #error, because the guard macro for getopt.h in
|
|
|
|
gnulib is not fixed. */
|
|
|
|
|
|
|
|
__BEGIN_DECLS
|
|
|
|
|
|
|
|
/* For communication from 'getopt' to the caller.
|
|
|
|
When 'getopt' finds an option that takes an argument,
|
|
|
|
the argument value is returned here.
|
|
|
|
Also, when 'ordering' is RETURN_IN_ORDER,
|
|
|
|
each non-option ARGV-element is returned here. */
|
|
|
|
|
|
|
|
extern char *optarg;
|
|
|
|
|
|
|
|
/* Index in ARGV of the next element to be scanned.
|
|
|
|
This is used for communication to and from the caller
|
|
|
|
and for communication between successive calls to 'getopt'.
|
|
|
|
|
|
|
|
On entry to 'getopt', zero means this is the first call; initialize.
|
|
|
|
|
|
|
|
When 'getopt' returns -1, this is the index of the first of the
|
|
|
|
non-option elements that the caller should itself scan.
|
|
|
|
|
|
|
|
Otherwise, 'optind' communicates from one call to the next
|
|
|
|
how much of ARGV has been scanned so far. */
|
|
|
|
|
|
|
|
extern int optind;
|
|
|
|
|
|
|
|
/* Callers store zero here to inhibit the error message 'getopt' prints
|
|
|
|
for unrecognized options. */
|
|
|
|
|
|
|
|
extern int opterr;
|
|
|
|
|
|
|
|
/* Set to an option character which was unrecognized. */
|
|
|
|
|
|
|
|
extern int optopt;
|
|
|
|
|
|
|
|
/* Get definitions and prototypes for functions to process the
|
|
|
|
arguments in ARGV (ARGC of them, minus the program name) for
|
|
|
|
options given in OPTS.
|
|
|
|
|
|
|
|
Return the option character from OPTS just read. Return -1 when
|
|
|
|
there are no more options. For unrecognized options, or options
|
|
|
|
missing arguments, 'optopt' is set to the option letter, and '?' is
|
|
|
|
returned.
|
|
|
|
|
|
|
|
The OPTS string is a list of characters which are recognized option
|
|
|
|
letters, optionally followed by colons, specifying that that letter
|
|
|
|
takes an argument, to be placed in 'optarg'.
|
|
|
|
|
|
|
|
If a letter in OPTS is followed by two colons, its argument is
|
|
|
|
optional. This behavior is specific to the GNU 'getopt'.
|
|
|
|
|
|
|
|
The argument '--' causes premature termination of argument
|
|
|
|
scanning, explicitly telling 'getopt' that there are no more
|
|
|
|
options.
|
|
|
|
|
|
|
|
If OPTS begins with '-', then non-option arguments are treated as
|
|
|
|
arguments to the option '\1'. This behavior is specific to the GNU
|
|
|
|
'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in
|
|
|
|
the environment, then do not permute arguments.
|
|
|
|
|
|
|
|
For standards compliance, the 'argv' argument has the type
|
|
|
|
char *const *, but this is inaccurate; if argument permutation is
|
|
|
|
enabled, the argv array (not the strings it points to) must be
|
|
|
|
writable. */
|
|
|
|
|
|
|
|
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
|
2017-04-09 07:53:27 +00:00
|
|
|
__THROW _GL_ARG_NONNULL ((2, 3));
|
Merge from gnulib
This merges some getopt fixes from Zack Weinberg, and affects only
non-GNUish platforms. It incorporates:
2017-04-06 getopt-gnu: omit some duplicate code
2017-04-06 getopt-posix: use angle-bracket include
2017-04-06 getopt: annotate files with relationship to glibc
2017-04-06 getopt: split up getopt.in.h and eliminate __need_getopt
2017-04-06 getopt: better handling of ambiguous options
2017-04-06 getopt: refactor long-option handling
2017-04-06 getopt: tidy up _getopt_initialize a bit
2017-04-06 getopt: merge from glibc: repetition reduction
2017-04-06 getopt: clean up error reporting
2017-04-06 getopt: fix fencepost error in ambiguous-W-option handling
2017-04-06 getopt: clean up getopt.c and getopt1.c file headers
2017-04-06 getopt: harmonize comments with glibc
2017-04-06 getopt: remove USE_NONOPTION_FLAGS
2017-04-06 getopt: tabify, in preparation for merge with glibc
2017-04-06 md5, sha1, sha256, sha512: Add comments re correctness
* build-aux/config.sub, doc/misc/texinfo.tex, lib/getopt.c:
* lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h, lib/md5.c:
* lib/md5.h, lib/sha1.c, lib/sha1.h, lib/sha256.c, lib/sha256.h:
* lib/sha512.c, lib/sha512.h, lib/unistd.in.h, m4/getopt.m4:
Copy from gnulib.
* lib/getopt_cdefs.in.h, lib/getopt_core.h, lib/getopt_ext.h:
* lib/getopt_pfx_core.h, lib/getopt_pfx_ext.h:
New files, taken from gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4:
Regenerate.
2017-04-06 23:29:36 +00:00
|
|
|
|
|
|
|
__END_DECLS
|
|
|
|
|
2017-04-09 07:53:27 +00:00
|
|
|
#endif /* _GETOPT_CORE_H */
|