105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Definitions for POSIX spawn interface.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2000, 2003-2004, 2008-2012 Free Software Foundation, Inc.
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This file is part of the GNU C Library.
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software: you can redistribute it and/or modify
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3 of the License, or
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (at your option) any later version.
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_SPAWN_H
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <spawn.h>
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_SPAWN_H
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_SPAWN_H
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get definitions of 'struct sched_param' and 'sigset_t'.
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   But avoid namespace pollution on glibc systems.  */
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !(defined __GLIBC__ && !defined __UCLIBC__)
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sched.h>
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <signal.h>
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <sys/types.h>
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __THROW
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define __THROW
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* GCC 2.95 and later have "__restrict"; C99 compilers have
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   "restrict", and "configure" may have defined "restrict".
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Other compilers use __restrict, __restrict__, and _Restrict, and
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'configure' might #define 'restrict' to those words, so pick a
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   different name.  */
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _Restrict_
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 199901L <= __STDC_VERSION__
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _Restrict_ restrict
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _Restrict_ __restrict
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _Restrict_
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* gcc 3.1 and up support the [restrict] syntax.  Don't trust
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   sys/cdefs.h's definition of __restrict_arr, though, as it
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   mishandles gcc -ansi -pedantic.  */
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _Restrict_arr_
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((199901L <= __STDC_VERSION__                                      \
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__))     \
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang           && !defined __STRICT_ANSI__))                                        \
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      && !defined __GNUG__)
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _Restrict_arr_ _Restrict_
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _Restrict_arr_
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_CXXDEFS_H
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXDEFS_H
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The three most frequent use cases of these macros are:
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a substitute for a function that is missing on some
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     platforms, but is declared and works fine on the platforms on which
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     it exists:
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if !@HAVE_FOO@
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on all platforms,
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some platforms:
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on some platforms
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some of them and
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is additionally either missing or undeclared on some other platforms:
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang*/
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_EXTERN_C declaration;
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern "C"
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a replacement function, named rpl_func, with the given prototype,
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares the system function, named func, with the given prototype,
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype func parameters_and_attributes
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL (func, rettype, parameters);
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                \
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                         \
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters = ::rpl_func;          \
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                         \
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function rpl_func may have a slightly different
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declaration.  A cast is used to silence the "invalid conversion" error
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that would otherwise occur.  */
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                     \
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                              \
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters =                           \
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                              \
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS (func, rettype, parameters);
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to the system provided function func, if GNULIB_NAMESPACE
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is defined.
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* If we were to write
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       rettype (*const func) parameters = ::func;
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     better (remove an indirection through a 'static' pointer variable),
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but then the _GL_CXXALIASWARN macro below would cause a warning not only
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                     \
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                              \
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters = ::func;  \
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                              \
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function func may have a slightly different declaration.
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   A cast is used to silence the "invalid conversion" error that would
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   otherwise occur.  */
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                          \
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                   \
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =               \
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::func); \
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                   \
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function is picked among a set of overloaded functions,
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   namely the one with rettype2 and parameters2.  Two consecutive casts
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are used to silence the "cannot find a match" and "invalid conversion"
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errors that would otherwise occur.  */
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* The outer cast must be a reinterpret_cast.
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The inner cast: When the function is defined as a set of overloaded
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     functions, it works as a static_cast<>, choosing the designated variant.
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     When the function is defined as a single variant, it works as a
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                                \
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                                         \
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =                                     \
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(                               \
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (rettype2(*)parameters2)(::func));                                  \
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                                         \
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN (func);
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when ::func is used but not when
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   variants.  */
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN_1(func,namespace) \
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_2 (func, namespace)
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (func, \
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "The symbol ::" #func " refers to the system function. " \
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "Use " #namespace "::" #func " instead.")
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when the given overloaded variant of ::func
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is used but not when GNULIB_NAMESPACE::func is used.  */
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                        GNULIB_NAMESPACE)
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "The symbol ::" #func " refers to the system function. " \
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "Use " #namespace "::" #func " instead.")
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_CXXDEFS_H */
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that the values passed as arguments n, ..., m must be non-NULL pointers.
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_ARG_NONNULL
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params)
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function __attribute__ ((__warning__ (message)))
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like _GL_WARN_ON_USE (function, "string"), except that the function is
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared with the given prototype, consisting of return type, parameters,
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and attributes.
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not work in this case.  */
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE_CXX
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes \
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     __attribute__ ((__warning__ (msg)))
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_EXTERN_C declaration;
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_EXTERN_C
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __cplusplus
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern "C"
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Data structure to contain attributes for thread creation.  */
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define posix_spawnattr_t rpl_posix_spawnattr_t
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 || !1
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_posix_spawnattr_t
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  short int _flags;
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  pid_t _pgrp;
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  sigset_t _sd;
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  sigset_t _ss;
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  struct sched_param _sp;
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int _policy;
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int __pad[16];
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang} posix_spawnattr_t;
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_posix_spawnattr_t 1
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Data structure to contain information about the actions to be
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performed in the new process with respect to file descriptors.  */
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define posix_spawn_file_actions_t rpl_posix_spawn_file_actions_t
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 || !1
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_posix_spawn_file_actions_t
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int _allocated;
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int _used;
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  struct __spawn_action *_actions;
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int __pad[16];
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang} posix_spawn_file_actions_t;
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_posix_spawn_file_actions_t 1
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Flags to be set in the 'posix_spawnattr_t'.  */
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Use the values from the system, but provide the missing ones.  */
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef POSIX_SPAWN_SETSCHEDPARAM
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSCHEDPARAM 0
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef POSIX_SPAWN_SETSCHEDULER
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSCHEDULER 0
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Use the values from the system, for better compatibility.  */
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But this implementation does not support AIX extensions.  */
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef POSIX_SPAWN_FORK_HANDLERS
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_RESETIDS           0x01
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETPGROUP          0x02
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSIGDEF          0x04
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSIGMASK         0x08
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSCHEDPARAM      0x10
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define POSIX_SPAWN_SETSCHEDULER       0x20
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A GNU extension.  Use the next free bit position.  */
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define POSIX_SPAWN_USEVFORK \
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  ((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1)                     \
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1)                 \
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1)                 \
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | POSIX_SPAWN_SETSIGMASK | (POSIX_SPAWN_SETSIGMASK - 1)               \
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | POSIX_SPAWN_SETSCHEDPARAM                                           \
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | (POSIX_SPAWN_SETSCHEDPARAM > 0 ? POSIX_SPAWN_SETSCHEDPARAM - 1 : 0) \
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | POSIX_SPAWN_SETSCHEDULER                                            \
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | (POSIX_SPAWN_SETSCHEDULER > 0 ? POSIX_SPAWN_SETSCHEDULER - 1 : 0))  \
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   + 1)
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int verify_POSIX_SPAWN_USEVFORK_no_overlap
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            [(((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER)
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang               & POSIX_SPAWN_USEVFORK)
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang              == 0)
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang             ? 1 : -1];
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap 1
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Before running the process perform the actions described in FILE-ACTIONS.
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This function is a possible cancellation points and therefore not
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   marked with __THROW. */
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn rpl_posix_spawn
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn, int,
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *_Restrict_ __pid,
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path,
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *_Restrict_ __file_actions,
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *_Restrict_ __attrp,
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[_Restrict_arr_],
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const envp[_Restrict_arr_])
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 5, 6)));
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn, int,
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *_Restrict_ __pid,
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path,
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *_Restrict_ __file_actions,
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *_Restrict_ __attrp,
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[_Restrict_arr_],
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const envp[_Restrict_arr_]));
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn, int,
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *_Restrict_ __pid,
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path,
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *_Restrict_ __file_actions,
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *_Restrict_ __attrp,
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[_Restrict_arr_],
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const envp[_Restrict_arr_])
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 5, 6)));
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn, int,
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *_Restrict_ __pid,
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path,
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *_Restrict_ __file_actions,
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *_Restrict_ __attrp,
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[_Restrict_arr_],
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const envp[_Restrict_arr_]));
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn);
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn, "posix_spawn is unportable - "
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn for portability");
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Similar to 'posix_spawn' but search for FILE in the PATH.
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This function is a possible cancellation points and therefore not
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   marked with __THROW.  */
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnp rpl_posix_spawnp
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnp, int,
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *__pid, const char *__file,
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *__file_actions,
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *__attrp,
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[], char *const envp[])
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 5, 6)));
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnp, int,
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *__pid, const char *__file,
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *__file_actions,
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *__attrp,
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[], char *const envp[]));
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnp, int,
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *__pid, const char *__file,
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *__file_actions,
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *__attrp,
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[], char *const envp[])
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 5, 6)));
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnp, int,
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (pid_t *__pid, const char *__file,
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawn_file_actions_t *__file_actions,
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const posix_spawnattr_t *__attrp,
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   char *const argv[], char *const envp[]));
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnp);
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnp
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNP
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnp, "posix_spawnp is unportable - "
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnp for portability");
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initialize data structure with attributes for 'spawn' to default values.  */
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_init rpl_posix_spawnattr_init
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                             __THROW _GL_ARG_NONNULL ((1)));
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr));
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                             __THROW _GL_ARG_NONNULL ((1)));
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr));
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_init);
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_init
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_INIT
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_init, "posix_spawnattr_init is unportable - "
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_init for portability");
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Free resources associated with ATTR.  */
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_destroy rpl_posix_spawnattr_destroy
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                __THROW _GL_ARG_NONNULL ((1)));
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr));
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                __THROW _GL_ARG_NONNULL ((1)));
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr));
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_destroy);
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_destroy
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_DESTROY
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_destroy,
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_destroy is unportable - "
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_destroy for portability");
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store signal mask for signals with default handling from ATTR in
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   SIGDEFAULT.  */
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getsigdefault rpl_posix_spawnattr_getsigdefault
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getsigdefault, int,
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigdefault)
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getsigdefault, int,
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigdefault));
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getsigdefault, int,
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigdefault)
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getsigdefault, int,
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigdefault));
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getsigdefault);
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getsigdefault
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGDEFAULT
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getsigdefault,
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getsigdefault is unportable - "
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getsigdefault for portability");
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT.  */
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setsigdefault rpl_posix_spawnattr_setsigdefault
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setsigdefault, int,
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigdefault)
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setsigdefault, int,
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigdefault));
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setsigdefault, int,
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigdefault)
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setsigdefault, int,
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigdefault));
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setsigdefault);
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setsigdefault
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGDEFAULT
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setsigdefault,
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setsigdefault is unportable - "
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setsigdefault for portability");
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store signal mask for the new process from ATTR in SIGMASK.  */
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getsigmask rpl_posix_spawnattr_getsigmask
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getsigmask, int,
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigmask)
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getsigmask, int,
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigmask));
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getsigmask, int,
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigmask)
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getsigmask, int,
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   sigset_t *_Restrict_ __sigmask));
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getsigmask);
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getsigmask
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGMASK
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getsigmask,
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getsigmask is unportable - "
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getsigmask for portability");
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set signal mask for the new process in ATTR to SIGMASK.  */
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setsigmask rpl_posix_spawnattr_setsigmask
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setsigmask, int,
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigmask)
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setsigmask, int,
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigmask));
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setsigmask, int,
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigmask)
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setsigmask, int,
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const sigset_t *_Restrict_ __sigmask));
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setsigmask);
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setsigmask
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGMASK
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setsigmask,
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setsigmask is unportable - "
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setsigmask for portability");
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get flag word from the attribute structure.  */
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getflags rpl_posix_spawnattr_getflags
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getflags, int,
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   short int *_Restrict_ __flags)
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getflags, int,
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   short int *_Restrict_ __flags));
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getflags, int,
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   short int *_Restrict_ __flags)
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getflags, int,
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   short int *_Restrict_ __flags));
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getflags);
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getflags
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETFLAGS
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getflags,
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getflags is unportable - "
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getflags for portability");
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store flags in the attribute structure.  */
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setflags rpl_posix_spawnattr_setflags
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setflags, int,
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, short int __flags)
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setflags, int,
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, short int __flags));
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setflags, int,
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, short int __flags)
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setflags, int,
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, short int __flags));
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setflags);
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setflags
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETFLAGS
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setflags,
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setflags is unportable - "
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setflags for portability");
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get process group ID from the attribute structure.  */
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getpgroup rpl_posix_spawnattr_getpgroup
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getpgroup, int,
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   pid_t *_Restrict_ __pgroup)
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getpgroup, int,
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   pid_t *_Restrict_ __pgroup));
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getpgroup, int,
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   pid_t *_Restrict_ __pgroup)
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getpgroup, int,
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   pid_t *_Restrict_ __pgroup));
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getpgroup);
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getpgroup
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETPGROUP
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getpgroup,
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getpgroup is unportable - "
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getpgroup for portability");
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store process group ID in the attribute structure.  */
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setpgroup rpl_posix_spawnattr_setpgroup
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setpgroup, int,
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, pid_t __pgroup)
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setpgroup, int,
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, pid_t __pgroup));
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setpgroup, int,
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, pid_t __pgroup)
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setpgroup, int,
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, pid_t __pgroup));
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setpgroup);
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setpgroup
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETPGROUP
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setpgroup,
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setpgroup is unportable - "
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setpgroup for portability");
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get scheduling policy from the attribute structure.  */
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getschedpolicy rpl_posix_spawnattr_getschedpolicy
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getschedpolicy, int,
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int *_Restrict_ __schedpolicy)
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getschedpolicy, int,
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int *_Restrict_ __schedpolicy));
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1 || POSIX_SPAWN_SETSCHEDULER == 0
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getschedpolicy, int,
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int *_Restrict_ __schedpolicy)
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getschedpolicy, int,
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int *_Restrict_ __schedpolicy));
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getschedpolicy);
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getschedpolicy
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPOLICY
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getschedpolicy,
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getschedpolicy is unportable - "
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getschedpolicy for portability");
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store scheduling policy in the attribute structure.  */
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setschedpolicy rpl_posix_spawnattr_setschedpolicy
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setschedpolicy, int,
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, int __schedpolicy)
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setschedpolicy, int,
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, int __schedpolicy));
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1 || POSIX_SPAWN_SETSCHEDULER == 0
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setschedpolicy, int,
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, int __schedpolicy)
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setschedpolicy, int,
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *__attr, int __schedpolicy));
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setschedpolicy);
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setschedpolicy
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPOLICY
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setschedpolicy,
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setschedpolicy is unportable - "
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setschedpolicy for portability");
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get scheduling parameters from the attribute structure.  */
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_getschedparam rpl_posix_spawnattr_getschedparam
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_getschedparam, int,
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   struct sched_param *_Restrict_ __schedparam)
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_getschedparam, int,
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   struct sched_param *_Restrict_ __schedparam));
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1 || POSIX_SPAWN_SETSCHEDPARAM == 0
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_getschedparam, int,
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   struct sched_param *_Restrict_ __schedparam)
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_getschedparam, int,
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const posix_spawnattr_t *_Restrict_ __attr,
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   struct sched_param *_Restrict_ __schedparam));
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_getschedparam);
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_getschedparam
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPARAM
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_getschedparam,
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_getschedparam is unportable - "
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_getschedparam for portability");
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store scheduling parameters in the attribute structure.  */
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawnattr_setschedparam rpl_posix_spawnattr_setschedparam
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawnattr_setschedparam, int,
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const struct sched_param *_Restrict_ __schedparam)
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawnattr_setschedparam, int,
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const struct sched_param *_Restrict_ __schedparam));
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1 || POSIX_SPAWN_SETSCHEDPARAM == 0
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawnattr_setschedparam, int,
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const struct sched_param *_Restrict_ __schedparam)
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 2)));
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawnattr_setschedparam, int,
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawnattr_t *_Restrict_ __attr,
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const struct sched_param *_Restrict_ __schedparam));
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawnattr_setschedparam);
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawnattr_setschedparam
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPARAM
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawnattr_setschedparam,
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawnattr_setschedparam is unportable - "
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawnattr_setschedparam for portability");
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initialize data structure for file attribute for 'spawn' call.  */
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn_file_actions_init rpl_posix_spawn_file_actions_init
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn_file_actions_init, int,
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions)
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn_file_actions_init, int,
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions));
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn_file_actions_init, int,
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions)
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn_file_actions_init, int,
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions));
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn_file_actions_init);
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn_file_actions_init
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn_file_actions_init,
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawn_file_actions_init is unportable - "
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn_file_actions_init for portability");
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Free resources associated with FILE-ACTIONS.  */
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn_file_actions_destroy rpl_posix_spawn_file_actions_destroy
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn_file_actions_destroy, int,
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions)
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn_file_actions_destroy, int,
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions));
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn_file_actions_destroy, int,
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions)
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn_file_actions_destroy, int,
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions));
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn_file_actions_destroy);
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn_file_actions_destroy
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_DESTROY
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn_file_actions_destroy,
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawn_file_actions_destroy is unportable - "
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn_file_actions_destroy for portability");
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Add an action to FILE-ACTIONS which tells the implementation to call
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'open' for the given file during the 'spawn' call.  */
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn_file_actions_addopen rpl_posix_spawn_file_actions_addopen
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn_file_actions_addopen, int,
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *_Restrict_ __file_actions,
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd,
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path, int __oflag, mode_t __mode)
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 3)));
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn_file_actions_addopen, int,
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *_Restrict_ __file_actions,
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd,
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path, int __oflag, mode_t __mode));
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn_file_actions_addopen, int,
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *_Restrict_ __file_actions,
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd,
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path, int __oflag, mode_t __mode)
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1, 3)));
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn_file_actions_addopen, int,
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *_Restrict_ __file_actions,
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd,
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   const char *_Restrict_ __path, int __oflag, mode_t __mode));
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn_file_actions_addopen);
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn_file_actions_addopen
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn_file_actions_addopen,
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawn_file_actions_addopen is unportable - "
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn_file_actions_addopen for portability");
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Add an action to FILE-ACTIONS which tells the implementation to call
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'close' for the given file descriptor during the 'spawn' call.  */
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn_file_actions_addclose rpl_posix_spawn_file_actions_addclose
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn_file_actions_addclose, int,
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions, int __fd)
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn_file_actions_addclose, int,
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions, int __fd));
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn_file_actions_addclose, int,
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions, int __fd)
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn_file_actions_addclose, int,
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions, int __fd));
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn_file_actions_addclose);
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn_file_actions_addclose
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn_file_actions_addclose,
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawn_file_actions_addclose is unportable - "
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn_file_actions_addclose for portability");
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Add an action to FILE-ACTIONS which tells the implementation to call
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'dup2' for the given file descriptors during the 'spawn' call.  */
115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define posix_spawn_file_actions_adddup2 rpl_posix_spawn_file_actions_adddup2
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (posix_spawn_file_actions_adddup2, int,
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions,
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd, int __newfd)
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
116705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (posix_spawn_file_actions_adddup2, int,
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions,
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd, int __newfd));
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (posix_spawn_file_actions_adddup2, int,
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions,
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd, int __newfd)
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  __THROW _GL_ARG_NONNULL ((1)));
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (posix_spawn_file_actions_adddup2, int,
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (posix_spawn_file_actions_t *__file_actions,
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int __fd, int __newfd));
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (posix_spawn_file_actions_adddup2);
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef posix_spawn_file_actions_adddup2
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (posix_spawn_file_actions_adddup2,
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "posix_spawn_file_actions_adddup2 is unportable - "
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module posix_spawn_file_actions_adddup2 for portability");
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_SPAWN_H */
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_SPAWN_H */
1194