/* Test of <stdlib.h> substitute.
- Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
per POSIX 2008. */
verify (sizeof NULL == sizeof (void *));
+#if GNULIB_TEST_SYSTEM_POSIX
+# include "test-sys_wait.h"
+#else
+# define test_sys_wait_macros() 0
+#endif
+
int
main (void)
{
- /* Check subset of <sys/wait.h> macros that must be visible here.
- Note that some of these macros are only portable when operating
- on an lvalue. */
- int i;
- for (i = 0; i < 0x8000; i = (i ? i << 1 : 1))
- {
- /* POSIX requires that for all valid process statuses, that
- exactly one of these three macros is true. But not all
- possible 16-bit values map to valid process status.
- Traditionally, 8 of the bits are for WIFEXITED, 7 of the bits
- to tell between WIFSIGNALED and WIFSTOPPED, and either 0x80
- or 0x8000 to flag that core was also dumped. Since we don't
- know which byte is WIFEXITED, we skip the both possible bits
- that can signal core dump. */
- if (i == 0x80)
- continue;
- if (!!WIFSIGNALED (i) + !!WIFEXITED (i) + !!WIFSTOPPED (i) != 1)
- return 1;
- }
- i = WEXITSTATUS (i) + WSTOPSIG (i) + WTERMSIG (i);
+ if (test_sys_wait_macros ())
+ return 1;
- switch (i)
- {
-#if 0
- /* Gnulib doesn't guarantee these, yet. */
- case WNOHANG:
- case WUNTRACED:
-#endif
- break;
- }
return exitcode;
}