+2008-10-05 Bruno Haible <bruno@clisp.org>
+
+ * lib/spawn.in.h (POSIX_SPAWN_*): Use the system's values, rather than
+ overriding them by ours.
+ (POSIX_SPAWN_USEVFORK): Use the next free bit position.
+
2008-10-05 Jim Meyering <meyering@redhat.com>
bootstrap: check for AC_PROG_LIBTOOL as well as AM_PROG_LIBTOOL
/* Flags to be set in the `posix_spawnattr_t'. */
-#undef POSIX_SPAWN_RESETIDS
-#define POSIX_SPAWN_RESETIDS 0x01
-#undef POSIX_SPAWN_SETPGROUP
-#define POSIX_SPAWN_SETPGROUP 0x02
-#undef POSIX_SPAWN_SETSIGDEF
-#define POSIX_SPAWN_SETSIGDEF 0x04
-#undef POSIX_SPAWN_SETSIGMASK
-#define POSIX_SPAWN_SETSIGMASK 0x08
-#undef POSIX_SPAWN_SETSCHEDPARAM
-#define POSIX_SPAWN_SETSCHEDPARAM 0x10
-#undef POSIX_SPAWN_SETSCHEDULER
-#define POSIX_SPAWN_SETSCHEDULER 0x20
-/* A GNU extension. */
-#undef POSIX_SPAWN_USEVFORK
-#define POSIX_SPAWN_USEVFORK 0x40
+#if @REPLACE_POSIX_SPAWN@
+/* Use the values from the system, for better compatibility. */
+/* But this implementation does not support AIX extensions. */
+# undef POSIX_SPAWN_FORK_HANDLERS
+#else
+# define POSIX_SPAWN_RESETIDS 0x01
+# define POSIX_SPAWN_SETPGROUP 0x02
+# define POSIX_SPAWN_SETSIGDEF 0x04
+# define POSIX_SPAWN_SETSIGMASK 0x08
+# define POSIX_SPAWN_SETSCHEDPARAM 0x10
+# define POSIX_SPAWN_SETSCHEDULER 0x20
+#endif
+/* A GNU extension. Use the next free bit position. */
+#define POSIX_SPAWN_USEVFORK \
+ ((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1) \
+ | POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1) \
+ | POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1) \
+ | POSIX_SPAWN_SETSIGMASK | (POSIX_SPAWN_SETSIGMASK - 1) \
+ | POSIX_SPAWN_SETSCHEDPARAM | (POSIX_SPAWN_SETSCHEDPARAM - 1) \
+ | POSIX_SPAWN_SETSCHEDULER | (POSIX_SPAWN_SETSCHEDULER - 1)) \
+ + 1)
+typedef int verify_POSIX_SPAWN_USEVFORK_no_overlap
+ [2 * (((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP
+ | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK
+ | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER)
+ & POSIX_SPAWN_USEVFORK) == 0) - 1];
#ifdef __cplusplus