diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-04-25 19:29:44 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-04-25 19:29:44 +0000 |
commit | 12404bb04e1e86052fb22005e6c05ab3d1ced46e (patch) | |
tree | 50c7ca7b3c0afa96ac7ad8075ab59566cd2196bc /libio | |
parent | 8f1b841e452dbb083112fd036033b7f4af506ba0 (diff) | |
download | glibc-12404bb04e1e86052fb22005e6c05ab3d1ced46e.tar glibc-12404bb04e1e86052fb22005e6c05ab3d1ced46e.tar.gz glibc-12404bb04e1e86052fb22005e6c05ab3d1ced46e.tar.bz2 glibc-12404bb04e1e86052fb22005e6c05ab3d1ced46e.zip |
Fix stdio.h cuserid namespace (bug 19989).
stdio.h declares cuserid if __USE_XOPEN. But this was removed in the
2001 edition of POSIX.
The #endif comment "Use X/Open, but not issue 6." reflects the correct
logic, but does not correspond to the #ifdef. The use of a correct
libc-hacker. The online archives for libc-hacker in August 2000 are
broken, but the messages can be found in the qmail archives in
/sourceware1/qmail/lists-sourceware/libc-hacker/archive/26 if you have
shell access to sourceware.
The issue showed up in August 2000 because of a warning about a
non-prototype definition in sysdeps/posix/cuserid.c when there was no
previous prototype declaration. Since we've now eliminated
non-prototype function definitions, that issue does not apply. The
other points from that discussion were about whether it should be
included in _GNU_SOURCE; whether _GNU_SOURCE should include
"everything"; whether deprecated interfaces such as this should be
excluded from it; and whether, even given exclusion of deprecated
interfaces, it should apply for deprecations in a version of POSIX
that at that time had not been released.
This patch follows the more conservative approach to a fix of keeping
the interface in _GNU_SOURCE. That matches how L_cuserid is handled.
I think there is a strong case for eliminating this interface from
_GNU_SOURCE (but this may not automatically be the case for every
interface removed in newer POSIX versions), but then L_cuserid should
also be removed from _GNU_SOURCE (in stdio-common/stdio_lim.h.in) at
the same time.
Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).
[BZ #19989]
* libio/stdio.h (cuserid): Do not declare if
[__USE_XOPEN2K && !__USE_GNU].
* conform/Makefile (test-xfail-XOPEN2K8/stdio.h/conform): Remove
variable.
Diffstat (limited to 'libio')
-rw-r--r-- | libio/stdio.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libio/stdio.h b/libio/stdio.h index d8d7fa0611..4b66530460 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -885,7 +885,7 @@ extern char *ctermid (char *__s) __THROW; #endif /* Use POSIX. */ -#ifdef __USE_XOPEN +#if (defined __USE_XOPEN && !defined __USE_XOPEN2K) || defined __USE_GNU /* Return the name of the current user. */ extern char *cuserid (char *__s); #endif /* Use X/Open, but not issue 6. */ |