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

@@ -29,6 +29,10 @@ The function @code{getopt} does not support the @samp{+} flag in the options
string on some platforms:
MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10.
@item
The function @code{getopt} does not obey the combination of @samp{+}
and @samp{:} flags in the options string on some platforms:
glibc 2.11.
@item
The function @code{getopt} does not obey the @samp{-} flag in the options
string when @env{POSIXLY_CORRECT} is set on some platforms:
Cygwin 1.7.0.
@@ -58,10 +62,9 @@ testsuite.
@item
The glibc implementation allows a complete reset of the environment,
including re-checking for @env{POSIXLY_CORRECT}, by setting
@code{optind} to 0. Other implementations provide @code{optreset},
@code{optind} to 0. Several BSD implementations provide @code{optreset},
causing a reset by setting it non-zero, although it does not
necessarily re-read @env{POSIXLY_CORRECT}.
@item
Mixing a leading @samp{-} or @samp{+} with a leading @samp{:} in the
optstring argument has inconsistent effects across platforms.
necessarily re-read @env{POSIXLY_CORRECT}. Solaris @code{getopt} does
not support either reset method, but does not maintain state that
needs the extra level of reset.
@end itemize