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