diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-11-09 00:04:02 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-11-09 00:04:02 -0500 |
commit | f5980e330a331b83f99a25c522aae00170dff131 (patch) | |
tree | ce6caa60da0d2167ac6dbf80e9b5c8100524ccda /include/sys | |
parent | 41a9ba25cd810fb86ad0d6943bf2d5556d91b99e (diff) | |
download | musl-f5980e330a331b83f99a25c522aae00170dff131.tar.gz |
adjust sys/wait.h not to produde errors in strict ISO C feature profile
siginfo_t is not available from signal.h when the strict ISO C feature
profile (e.g. passing -std=c99 to gcc without defining any other
feature test macros) is used, but the type is needed to declare
waitid. using sys/wait.h (or any POSIX headers) in strict ISO C mode
is an application bug, but in the interest of compatibility, it's best
to avoid producing gratuitous errors. the simplest fix I could find is
suppressing the declaration of waitid (and also signal.h inclusion,
since it's not needed for anything else) in this case, while still
exposing everything else in sys/wait.h
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/wait.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/sys/wait.h b/include/sys/wait.h index a7ad7cd1..c794f5d3 100644 --- a/include/sys/wait.h +++ b/include/sys/wait.h @@ -6,8 +6,6 @@ extern "C" { #include <features.h> -#include <signal.h> - #define __NEED_pid_t #define __NEED_id_t #include <bits/alltypes.h> @@ -19,9 +17,15 @@ typedef enum { } idtype_t; pid_t wait (int *); -int waitid (idtype_t, id_t, siginfo_t *, int); pid_t waitpid (pid_t, int *, int ); +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#include <signal.h> +int waitid (idtype_t, id_t, siginfo_t *, int); +#endif + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #include <sys/resource.h> pid_t wait3 (int *, int, struct rusage *); |