1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-17 12:41:05 +03:00

getopt-gnu: match recent glibc fixes and posix ruling

The POSIX folks admitted that codifying the behavior of GNU
getopt on a leading '+' in optstring is worthwhile, for writing
programs such as env(1) even when POSIXLY_CORRECT is not defined.
http://austingroupbugs.net/view.php?id=191
However, the ruling is an enhancement request for the next
version of POSIX, and is not binding on platforms that comply
with POSIX 2008, so it should only be enforced for getopt-gnu.

* tests/test-getopt.h (test_getopt): Strengthen tests of leading
'+' handling, when requesting extensions.
* tests/test-getopt_long.h (test_getopt_long): Strengthen test of
'W;' handling.
* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Detect glibc 2.11 bug.
* doc/posix-functions/getopt.texi (getopt): Document this.
* doc/glibc-functions/getopt_long.texi (getopt_long): Likewise.
* doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
Likewise.
This commit is contained in:
Eric Blake
2010-04-09 16:34:16 -06:00
parent db3e280624
commit 61c96af09d
7 changed files with 173 additions and 35 deletions

View File

@@ -7,6 +7,14 @@ Gnulib module: getopt-gnu
Portability problems fixed by Gnulib:
@itemize
@item
The function @code{getopt_long} does not obey the combination of
@samp{+} and @samp{:} flags in the options string on some platforms:
glibc 2.11.
@item
The use of @samp{W;} in the optstring argument to does not always
allow @code{-W foo} to behave synonymously with @code{--foo}:
glibc 2.11.
@item
The function @code{getopt_long} does not support the @samp{+} flag in
the options string on some platforms:
MacOS X 10.5, AIX 5.2, OSF/1 5.1, Solaris 10.
@@ -33,11 +41,4 @@ AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Interix 3.5.
Portability problems not fixed by Gnulib:
@itemize
@item
The glibc extension of using @samp{W;} in the optstring argument to
allow @code{-W foo} to behave synonymously with @code{--foo} is not
very reliable, even in glibc.
@item
Mixing a leading @samp{-} or @samp{+} with a leading @samp{:} in the
optstring argument has inconsistent effects across platforms.
@end itemize