/* Test of <sys/wait.h> substitute.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 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
/* Check for existence of required types. */
static pid_t a;
+#include "test-sys_wait.h"
+
int
main (void)
{
- /* Check for existence of required macros. Note that we document
- that these are safe only on lvalues. */
- int i;
- for (i = 0; i < 0x10000; 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)
+ switch (0)
{
#if 0
/* Gnulib doesn't guarantee these, yet. */
case WCONTINUED:
- case WNOHANG:
- case WUNTRACED:
case WEXITED:
case WNOWAIT:
case WSTOPPED:
#endif
break;
}
- return a ? i : 0;
+
+ return a ? 1 : 0;
}