aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-04-01 12:11:33 -0400
committerZack Weinberg <zackw@panix.com>2017-04-07 07:50:06 -0400
commit7a7be6c9a2a89ac5783d4f27d67b0fae3218228f (patch)
tree924a9917be84855368ad0e4722b4694e29ecbe30 /ChangeLog
parent544ce845def4540de11d9484df888df94876b14e (diff)
downloadglibc-7a7be6c9a2a89ac5783d4f27d67b0fae3218228f.tar
glibc-7a7be6c9a2a89ac5783d4f27d67b0fae3218228f.tar.gz
glibc-7a7be6c9a2a89ac5783d4f27d67b0fae3218228f.tar.bz2
glibc-7a7be6c9a2a89ac5783d4f27d67b0fae3218228f.zip
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 **'.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog24
1 files changed, 24 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d45be5fedd..e2587267b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,29 @@
2017-04-07 Zack Weinberg <zackw@panix.com>
+ * 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 **'.
+
* stdio-common/fxprintf.c (__fxprintf_nocancel): New function.
(locked_vfxprintf): New helper function. Handle arbitrary
multibyte strings, not just ASCII.