[PATCH] Fix sys/wait.h

Jakub Jelinek jakub@redhat.com
Tue Jan 12 11:01:00 GMT 2010


On Tue, Jan 12, 2010 at 11:50:13AM +0100, Jakub Jelinek wrote:
> #define _POSIX_C_SOURCE 200809L
> #include <stdlib.h>
> #include <sys/wait.h>
> 
> now fails to compile.  The following should fix it.

Small correction to the testcase, the problem is without any
feature test macros actually.
In file included from a.c:2:
/usr/include/sys/wait.h:67: error: conflicting types for ‘__WAIT_STATUS’
/usr/include/stdlib.h:72: note: previous declaration of ‘__WAIT_STATUS’ was here
In file included from /usr/include/sys/wait.h:80,
                 from a.c:2:
/usr/include/bits/waitstatus.h:68: error: redefinition of ‘union wait’

The posted patch fixes it.

> 2010-01-12  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* posix/sys/wait.h: Don't define W* macros etc. if
> 	stdlib.h has been included with _POSIX_C_SOURCE >= 200809L.
> 
> diff --git a/posix/sys/wait.h b/posix/sys/wait.h
> index bb98c00..6d7f068 100644
> --- a/posix/sys/wait.h
> +++ b/posix/sys/wait.h
> @@ -32,7 +32,7 @@ __BEGIN_DECLS
>  #include <sys/resource.h>
>  
>  /* These macros could also be defined in <stdlib.h>.  */
> -#if !defined _STDLIB_H || !defined __USE_XOPEN
> +#if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8)
>  /* This will define the `W*' macros for the flag
>     bits to `waitpid', `wait3', and `wait4'.  */
>  # include <bits/waitflags.h>

	Jakub



More information about the Libc-hacker mailing list