Fix sigwait namespace (bug 21550)

Message ID alpine.DEB.2.20.1706051556460.19349@digraph.polyomino.org.uk
State New, archived
Headers

Commit Message

Joseph Myers June 5, 2017, 3:57 p.m. UTC
  sigwait was added to POSIX in 1995; it is not in older POSIX versions
or XPG4 / XPG4.2.  Thus it should be declared only if
__USE_POSIX199506; signal.h wrongly declares it for __USE_POSIX.
(sigwaitinfo is correctly conditioned on __USE_POSIX199309.)  This
patch fixes the condition on the declaration of sigwait.

Tested for x86_64.  Because of other namespace problems this does not
allow any conform/ XFAILs to be removed.

2017-06-05  Joseph Myers  <joseph@codesourcery.com>

	[BZ #21550]
	* signal/signal.h (sigwait): Only declare if [__USE_POSIX199506].
  

Comments

Joseph Myers June 12, 2017, 3:36 p.m. UTC | #1
Ping.  This patch 
<https://sourceware.org/ml/libc-alpha/2017-06/msg00186.html> is pending 
review.
  
Zack Weinberg June 12, 2017, 4:54 p.m. UTC | #2
On Mon, Jun 5, 2017 at 11:57 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> sigwait was added to POSIX in 1995; it is not in older POSIX versions
> or XPG4 / XPG4.2.  Thus it should be declared only if
> __USE_POSIX199506; signal.h wrongly declares it for __USE_POSIX.
> (sigwaitinfo is correctly conditioned on __USE_POSIX199309.)  This
> patch fixes the condition on the declaration of sigwait.

This is OK.

zw
  

Patch

diff --git a/signal/signal.h b/signal/signal.h
index b311473..dbe3029 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -240,12 +240,14 @@  extern int sigaction (int __sig, const struct sigaction *__restrict __act,
 extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
 
 
+# ifdef __USE_POSIX199506
 /* Select any of pending signals from SET or wait for any to arrive.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
 extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
      __nonnull ((1, 2));
+# endif /* Use POSIX 1995.  */
 
 # ifdef __USE_POSIX199309
 /* Select any of pending signals from SET and place information in INFO.