getopt: merge from gnulib: function prototype adjustments
commit7a7be6c9a2a89ac5783d4f27d67b0fae3218228f
authorZack Weinberg <zackw@panix.com>
Sat, 1 Apr 2017 16:11:33 +0000 (1 12:11 -0400)
committerZack Weinberg <zackw@panix.com>
Fri, 7 Apr 2017 11:50:06 +0000 (7 07:50 -0400)
tree924a9917be84855368ad0e4722b4694e29ecbe30
parent544ce845def4540de11d9484df888df94876b14e
getopt: merge from gnulib: function prototype adjustments

For standards compliance, getopt, getopt_long, and getopt_long_only in
glibc have to take 'char *const *argv' even though they can mutate the
array.  gnulib has tried to clean this up as much as possible: all the
internal functions use 'char **argv', and when used standalone, so do
getopt_long and getopt_long_only.

Also brought over are __nonnull annotations, corrections to documentation,
and apparently it is no longer necessary to worry about conflicting
prototypes for getopt.  The macroification of the definitions of
getopt and __posix_getopt goes beyond what is currently in gnulib.

At this point getopt1.c and getopt_int.h are identical to their gnulib
versions.

* posix/getopt.h: Add backup definition of __nonnull for
consistency with gnulib.  Define __getopt_argv_const to const
if not already defined.
(getopt): Update doc comment from gnulib.  Prototype
unconditionally.  Add __nonnull annotation.
(__posix_getopt): Add __nonnull annotation.
(getopt_long, getopt_long_only): Use __getopt_argv_const in
prototypes for consistency with gnulib.  Add __nonnull
annotations.
* posix/getopt.c (_getopt_initialize, _getopt_internal_r)
(getopt_internal): Change 'argv' argument to type 'char **'.
Remove now-unnecessary casts.
(getopt, __posix_getopt): Eliminate repetition with a macro.
Cast 'argv' to 'char **' when calling _getopt_internal.
* posix/getopt1.c (getopt_long, getopt_long_only):
Use __getopt_argv_const for consistency with gnulib.
Cast 'argv' to 'char **' when calling _getopt_internal.
(_getopt_long_r, _getopt_long_only_r):
Change 'argv' argument to type 'char **'.
(main): Constify 'long_options'.
* posix/getopt_int.h (getopt_internal, _getopt_internal_r)
(_getopt_long_r, _getopt_long_only_r):
Change 'argv' argument to type 'char **'.
ChangeLog
posix/getopt.c
posix/getopt.h
posix/getopt1.c
posix/getopt_int.h