warn-on-use: use instead of link-warning
[pspp] / lib / spawn.in.h
index a2b0d2484580cb56fab7813c4ab753ffdfa0f139..84ba93c1a7e9344580e8b76b85caac504720f6ae 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for POSIX spawn interface.
-   Copyright (C) 2000, 2003, 2004, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2003-2004, 2008-2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
@@ -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@
 #ifndef _GL_SPAWN_H
 #define _GL_SPAWN_H
 
-#include <sched.h>
-#include <signal.h>
+/* Get definitions of 'struct sched_param' and 'sigset_t'.
+   But avoid namespace pollution on glibc systems.  */
+#ifndef __GLIBC__
+# include <sched.h>
+# include <signal.h>
+#endif
+
 #include <sys/types.h>
 
 #ifndef __THROW
@@ -53,9 +60,9 @@
    sys/cdefs.h's definition of __restrict_arr, though, as it
    mishandles gcc -ansi -pedantic.  */
 #ifndef _Restrict_arr_
-# if ((199901L <= __STDC_VERSION__                                     \
-       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))    \
-          && !__STRICT_ANSI__))                                        \
+# if ((199901L <= __STDC_VERSION__                                      \
+       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))     \
+           && !__STRICT_ANSI__))                                        \
       && !defined __GNUG__)
 #  define _Restrict_arr_ _Restrict_
 # else
 # endif
 #endif
 
-/* The definition of GL_LINK_WARNING is copied here.  */
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
 
 
 /* Data structure to contain attributes for thread creation.  */
 #if @REPLACE_POSIX_SPAWN@
 # define posix_spawnattr_t rpl_posix_spawnattr_t
 #endif
+#if @REPLACE_POSIX_SPAWN@ || !@HAVE_POSIX_SPAWNATTR_T@
 typedef struct
 {
   short int _flags;
@@ -80,6 +90,7 @@ typedef struct
   int _policy;
   int __pad[16];
 } posix_spawnattr_t;
+#endif
 
 
 /* Data structure to contain information about the actions to be
@@ -87,6 +98,7 @@ typedef struct
 #if @REPLACE_POSIX_SPAWN@
 # define posix_spawn_file_actions_t rpl_posix_spawn_file_actions_t
 #endif
+#if @REPLACE_POSIX_SPAWN@ || !@HAVE_POSIX_SPAWN_FILE_ACTIONS_T@
 typedef struct
 {
   int _allocated;
@@ -94,24 +106,36 @@ typedef struct
   struct __spawn_action *_actions;
   int __pad[16];
 } posix_spawn_file_actions_t;
+#endif
 
 
 /* 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
@@ -130,11 +154,18 @@ extern "C" {
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawn (pid_t *_Restrict_ __pid,
-                       const char *_Restrict_ __path,
-                       const posix_spawn_file_actions_t *_Restrict_ __file_actions,
-                       const posix_spawnattr_t *_Restrict_ __attrp,
-                       char *const argv[_Restrict_arr_],
-                       char *const envp[_Restrict_arr_]);
+                        const char *_Restrict_ __path,
+                        const posix_spawn_file_actions_t *_Restrict_ __file_actions,
+                        const posix_spawnattr_t *_Restrict_ __attrp,
+                        char *const argv[_Restrict_arr_],
+                        char *const envp[_Restrict_arr_])
+     _GL_ARG_NONNULL ((2, 5, 6));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn
+# if HAVE_RAW_DECL_POSIX_SPAWN
+_GL_WARN_ON_USE (posix_spawn, "posix_spawn is unportable - "
+                 "use gnulib module posix_spawn for portability");
 # endif
 #endif
 
@@ -148,9 +179,16 @@ extern int posix_spawn (pid_t *_Restrict_ __pid,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnp (pid_t *__pid, const char *__file,
-                        const posix_spawn_file_actions_t *__file_actions,
-                        const posix_spawnattr_t *__attrp,
-                        char *const argv[], char *const envp[]);
+                         const posix_spawn_file_actions_t *__file_actions,
+                         const posix_spawnattr_t *__attrp,
+                         char *const argv[], char *const envp[])
+     _GL_ARG_NONNULL ((2, 5, 6));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnp
+# if HAVE_RAW_DECL_POSIX_SPAWNP
+_GL_WARN_ON_USE (posix_spawnp, "posix_spawnp is unportable - "
+                 "use gnulib module posix_spawnp for portability");
 # endif
 #endif
 
@@ -161,7 +199,14 @@ extern int posix_spawnp (pid_t *__pid, const char *__file,
 #  define posix_spawnattr_init rpl_posix_spawnattr_init
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
-extern int posix_spawnattr_init (posix_spawnattr_t *__attr) __THROW;
+extern int posix_spawnattr_init (posix_spawnattr_t *__attr)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_init
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_INIT
+_GL_WARN_ON_USE (posix_spawnattr_init, "posix_spawnattr_init is unportable - "
+                 "use gnulib module posix_spawnattr_init for portability");
 # endif
 #endif
 
@@ -171,7 +216,14 @@ extern int posix_spawnattr_init (posix_spawnattr_t *__attr) __THROW;
 #  define posix_spawnattr_destroy rpl_posix_spawnattr_destroy
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
-extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr) __THROW;
+extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_destroy
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_DESTROY
+_GL_WARN_ON_USE (posix_spawnattr_destroy, "posix_spawnattr_destroy is unportable - "
+                 "use gnulib module posix_spawnattr_destroy for portability");
 # endif
 #endif
 
@@ -183,8 +235,14 @@ extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr) __THROW;
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getsigdefault (const posix_spawnattr_t *_Restrict_ __attr,
-                                         sigset_t *_Restrict_ __sigdefault)
-     __THROW;
+                                          sigset_t *_Restrict_ __sigdefault)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getsigdefault
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGDEFAULT
+_GL_WARN_ON_USE (posix_spawnattr_getsigdefault, "posix_spawnattr_getsigdefault is unportable - "
+                 "use gnulib module posix_spawnattr_getsigdefault for portability");
 # endif
 #endif
 
@@ -195,8 +253,14 @@ extern int posix_spawnattr_getsigdefault (const posix_spawnattr_t *_Restrict_ __
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setsigdefault (posix_spawnattr_t *_Restrict_ __attr,
-                                         const sigset_t *_Restrict_ __sigdefault)
-     __THROW;
+                                          const sigset_t *_Restrict_ __sigdefault)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setsigdefault
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGDEFAULT
+_GL_WARN_ON_USE (posix_spawnattr_setsigdefault, "posix_spawnattr_setsigdefault is unportable - "
+                 "use gnulib module posix_spawnattr_setsigdefault for portability");
 # endif
 #endif
 
@@ -207,7 +271,14 @@ extern int posix_spawnattr_setsigdefault (posix_spawnattr_t *_Restrict_ __attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getsigmask (const posix_spawnattr_t *_Restrict_ __attr,
-                                      sigset_t *_Restrict_ __sigmask) __THROW;
+                                       sigset_t *_Restrict_ __sigmask)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getsigmask
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGMASK
+_GL_WARN_ON_USE (posix_spawnattr_getsigmask, "posix_spawnattr_getsigmask is unportable - "
+                 "use gnulib module posix_spawnattr_getsigmask for portability");
 # endif
 #endif
 
@@ -218,8 +289,14 @@ extern int posix_spawnattr_getsigmask (const posix_spawnattr_t *_Restrict_ __att
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setsigmask (posix_spawnattr_t *_Restrict_ __attr,
-                                      const sigset_t *_Restrict_ __sigmask)
-     __THROW;
+                                       const sigset_t *_Restrict_ __sigmask)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setsigmask
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGMASK
+_GL_WARN_ON_USE (posix_spawnattr_setsigmask, "posix_spawnattr_setsigmask is unportable - "
+                 "use gnulib module posix_spawnattr_setsigmask for portability");
 # endif
 #endif
 
@@ -230,7 +307,14 @@ extern int posix_spawnattr_setsigmask (posix_spawnattr_t *_Restrict_ __attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getflags (const posix_spawnattr_t *_Restrict_ __attr,
-                                    short int *_Restrict_ __flags) __THROW;
+                                     short int *_Restrict_ __flags)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getflags
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETFLAGS
+_GL_WARN_ON_USE (posix_spawnattr_getflags, "posix_spawnattr_getflags is unportable - "
+                 "use gnulib module posix_spawnattr_getflags for portability");
 # endif
 #endif
 
@@ -241,7 +325,14 @@ extern int posix_spawnattr_getflags (const posix_spawnattr_t *_Restrict_ __attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setflags (posix_spawnattr_t *__attr,
-                                    short int __flags) __THROW;
+                                     short int __flags)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setflags
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETFLAGS
+_GL_WARN_ON_USE (posix_spawnattr_setflags, "posix_spawnattr_setflags is unportable - "
+                 "use gnulib module posix_spawnattr_setflags for portability");
 # endif
 #endif
 
@@ -252,8 +343,14 @@ extern int posix_spawnattr_setflags (posix_spawnattr_t *__attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getpgroup (const posix_spawnattr_t *_Restrict_ __attr,
-                                     pid_t *_Restrict_ __pgroup)
-     __THROW;
+                                      pid_t *_Restrict_ __pgroup)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getpgroup
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETPGROUP
+_GL_WARN_ON_USE (posix_spawnattr_getpgroup, "posix_spawnattr_getpgroup is unportable - "
+                 "use gnulib module posix_spawnattr_getpgroup for portability");
 # endif
 #endif
 
@@ -264,7 +361,14 @@ extern int posix_spawnattr_getpgroup (const posix_spawnattr_t *_Restrict_ __attr
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr,
-                                     pid_t __pgroup) __THROW;
+                                      pid_t __pgroup)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setpgroup
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETPGROUP
+_GL_WARN_ON_USE (posix_spawnattr_setpgroup, "posix_spawnattr_setpgroup is unportable - "
+                 "use gnulib module posix_spawnattr_setpgroup for portability");
 # endif
 #endif
 
@@ -275,8 +379,14 @@ extern int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getschedpolicy (const posix_spawnattr_t *_Restrict_ __attr,
-                                          int *_Restrict_ __schedpolicy)
-     __THROW;
+                                           int *_Restrict_ __schedpolicy)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getschedpolicy
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPOLICY
+_GL_WARN_ON_USE (posix_spawnattr_getschedpolicy, "posix_spawnattr_getschedpolicy is unportable - "
+                 "use gnulib module posix_spawnattr_getschedpolicy for portability");
 # endif
 #endif
 
@@ -287,7 +397,14 @@ extern int posix_spawnattr_getschedpolicy (const posix_spawnattr_t *_Restrict_ _
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr,
-                                          int __schedpolicy) __THROW;
+                                           int __schedpolicy)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setschedpolicy
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPOLICY
+_GL_WARN_ON_USE (posix_spawnattr_setschedpolicy, "posix_spawnattr_setschedpolicy is unportable - "
+                 "use gnulib module posix_spawnattr_setschedpolicy for portability");
 # endif
 #endif
 
@@ -298,7 +415,14 @@ extern int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr,
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_getschedparam (const posix_spawnattr_t *_Restrict_ __attr,
-                                         struct sched_param *_Restrict_ __schedparam) __THROW;
+                                          struct sched_param *_Restrict_ __schedparam)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_getschedparam
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPARAM
+_GL_WARN_ON_USE (posix_spawnattr_getschedparam, "posix_spawnattr_getschedparam is unportable - "
+                 "use gnulib module posix_spawnattr_getschedparam for portability");
 # endif
 #endif
 
@@ -309,7 +433,14 @@ extern int posix_spawnattr_getschedparam (const posix_spawnattr_t *_Restrict_ __
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawnattr_setschedparam (posix_spawnattr_t *_Restrict_ __attr,
-                                         const struct sched_param *_Restrict_ __schedparam) __THROW;
+                                          const struct sched_param *_Restrict_ __schedparam)
+     __THROW _GL_ARG_NONNULL ((1, 2));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawnattr_setschedparam
+# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPARAM
+_GL_WARN_ON_USE (posix_spawnattr_setschedparam, "posix_spawnattr_setschedparam is unportable - "
+                 "use gnulib module posix_spawnattr_setschedparam for portability");
 # endif
 #endif
 
@@ -320,7 +451,14 @@ extern int posix_spawnattr_setschedparam (posix_spawnattr_t *_Restrict_ __attr,
 #  define posix_spawn_file_actions_init rpl_posix_spawn_file_actions_init
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
-extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_actions) __THROW;
+extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_actions)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn_file_actions_init
+# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT
+_GL_WARN_ON_USE (posix_spawn_file_actions_init, "posix_spawn_file_actions_init is unportable - "
+                 "use gnulib module posix_spawn_file_actions_init for portability");
 # endif
 #endif
 
@@ -330,7 +468,14 @@ extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_act
 #  define posix_spawn_file_actions_destroy rpl_posix_spawn_file_actions_destroy
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
-extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *__file_actions) __THROW;
+extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *__file_actions)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn_file_actions_destroy
+# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_DESTROY
+_GL_WARN_ON_USE (posix_spawn_file_actions_destroy, "posix_spawn_file_actions_destroy is unportable - "
+                 "use gnulib module posix_spawn_file_actions_destroy for portability");
 # endif
 #endif
 
@@ -342,10 +487,16 @@ extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *__file_
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t *_Restrict_ __file_actions,
-                                            int __fd,
-                                            const char *_Restrict_ __path,
-                                            int __oflag, mode_t __mode)
-     __THROW;
+                                             int __fd,
+                                             const char *_Restrict_ __path,
+                                             int __oflag, mode_t __mode)
+     __THROW _GL_ARG_NONNULL ((1, 3));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn_file_actions_addopen
+# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN
+_GL_WARN_ON_USE (posix_spawn_file_actions_addopen, "posix_spawn_file_actions_addopen is unportable - "
+                 "use gnulib module posix_spawn_file_actions_addopen for portability");
 # endif
 #endif
 
@@ -357,8 +508,14 @@ extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t *_Restri
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *__file_actions,
-                                             int __fd)
-     __THROW;
+                                              int __fd)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn_file_actions_addclose
+# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE
+_GL_WARN_ON_USE (posix_spawn_file_actions_addclose, "posix_spawn_file_actions_addclose is unportable - "
+                 "use gnulib module posix_spawn_file_actions_addclose for portability");
 # endif
 #endif
 
@@ -370,7 +527,14 @@ extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *__file
 # endif
 # if !@HAVE_POSIX_SPAWN@ || @REPLACE_POSIX_SPAWN@
 extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *__file_actions,
-                                            int __fd, int __newfd) __THROW;
+                                             int __fd, int __newfd)
+     __THROW _GL_ARG_NONNULL ((1));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef posix_spawn_file_actions_adddup2
+# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2
+_GL_WARN_ON_USE (posix_spawn_file_actions_adddup2, "posix_spawn_file_actions_adddup2 is unportable - "
+                 "use gnulib module posix_spawn_file_actions_adddup2 for portability");
 # endif
 #endif