New module 'unicase/u16-ct-totitle'.
[gnulib.git] / lib / spawn.in.h
index 7e86737..d67b766 100644 (file)
@@ -17,7 +17,9 @@
 
 #ifndef _GL_SPAWN_H
 
+#if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
+#endif
 
 /* The include_next requires a split double-inclusion guard.  */
 #if @HAVE_SPAWN_H@
@@ -97,14 +99,32 @@ typedef struct
 
 
 /* Flags to be set in the `posix_spawnattr_t'.  */
-#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
-/* A GNU extension.  */
-#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