105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A GNU-like <signal.h>.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2006-2012 Free Software Foundation, Inc.
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#if __GNUC__ >= 3
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention:
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - Inside glibc header files.
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On glibc systems we have a sequence of nested includes
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <signal.h> -> <ucontext.h> -> <signal.h>.
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     In this situation, the functions are not yet declared, therefore we cannot
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     provide the C++ aliases.
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On glibc systems with GCC 4.3 we have a sequence of nested includes
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     In this situation, some of the functions are not yet declared, therefore
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     we cannot provide the C++ aliases.  */
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <signal.h>
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation convention.  */
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_SIGNAL_H
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ALREADY_INCLUDING_SIGNAL_H
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define pid_t, uid_t.
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   us; so include <sys/types.h> now, before the second inclusion guard.  */
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <sys/types.h>
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include_next <signal.h>
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef _GL_ALREADY_INCLUDING_SIGNAL_H
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_SIGNAL_H
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_SIGNAL_H
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   pthread_sigmask in <pthread.h>, not in <signal.h>.
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   But avoid namespace pollution on glibc systems.*/
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (0 || defined GNULIB_POSIXCHECK) \
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ || defined __sun) \
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <pthread.h>
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_CXXDEFS_H
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXDEFS_H
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The three most frequent use cases of these macros are:
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a substitute for a function that is missing on some
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     platforms, but is declared and works fine on the platforms on which
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     it exists:
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if !@HAVE_FOO@
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on all platforms,
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some platforms:
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on some platforms
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some of them and
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is additionally either missing or undeclared on some other platforms:
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang*/
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_EXTERN_C declaration;
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern "C"
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a replacement function, named rpl_func, with the given prototype,
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares the system function, named func, with the given prototype,
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype func parameters_and_attributes
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL (func, rettype, parameters);
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                \
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                         \
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters = ::rpl_func;          \
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                         \
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function rpl_func may have a slightly different
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declaration.  A cast is used to silence the "invalid conversion" error
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that would otherwise occur.  */
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                     \
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                              \
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters =                           \
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                              \
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS (func, rettype, parameters);
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to the system provided function func, if GNULIB_NAMESPACE
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is defined.
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* If we were to write
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       rettype (*const func) parameters = ::func;
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     better (remove an indirection through a 'static' pointer variable),
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but then the _GL_CXXALIASWARN macro below would cause a warning not only
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                     \
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                              \
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters = ::func;  \
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                              \
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function func may have a slightly different declaration.
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   A cast is used to silence the "invalid conversion" error that would
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   otherwise occur.  */
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                          \
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                   \
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =               \
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::func); \
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                   \
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function is picked among a set of overloaded functions,
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   namely the one with rettype2 and parameters2.  Two consecutive casts
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are used to silence the "cannot find a match" and "invalid conversion"
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errors that would otherwise occur.  */
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* The outer cast must be a reinterpret_cast.
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The inner cast: When the function is defined as a set of overloaded
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     functions, it works as a static_cast<>, choosing the designated variant.
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     When the function is defined as a single variant, it works as a
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                                \
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                                         \
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =                                     \
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(                               \
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (rettype2(*)parameters2)(::func));                                  \
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                                         \
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN (func);
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when ::func is used but not when
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   variants.  */
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN_1(func,namespace) \
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_2 (func, namespace)
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (func, \
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "The symbol ::" #func " refers to the system function. " \
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "Use " #namespace "::" #func " instead.")
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when the given overloaded variant of ::func
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is used but not when GNULIB_NAMESPACE::func is used.  */
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                        GNULIB_NAMESPACE)
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "The symbol ::" #func " refers to the system function. " \
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "Use " #namespace "::" #func " instead.")
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_CXXDEFS_H */
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that the values passed as arguments n, ..., m must be non-NULL pointers.
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_ARG_NONNULL
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_ARG_NONNULL(params)
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function __attribute__ ((__warning__ (message)))
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like _GL_WARN_ON_USE (function, "string"), except that the function is
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared with the given prototype, consisting of return type, parameters,
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and attributes.
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not work in this case.  */
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE_CXX
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes \
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     __attribute__ ((__warning__ (msg)))
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_EXTERN_C declaration;
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_EXTERN_C
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __cplusplus
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern "C"
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* On AIX, sig_atomic_t already includes volatile.  C99 requires that
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Hence, redefine this to a non-volatile type as needed.  */
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ! 1
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sig_atomic_t
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int rpl_sig_atomic_t;
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef sig_atomic_t
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define sig_atomic_t rpl_sig_atomic_t
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sig_atomic_t 1
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A set or mask of signals.  */
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sigset_t
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int sigset_t;
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sigset_t 1
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define sighandler_t, the type of signal handlers.  A GNU extension.  */
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !0
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sighandler_t
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void (*sighandler_t) (int);
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sighandler_t 1
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef SIGPIPE
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define SIGPIPE to a value that does not overlap with other signals.  */
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIGPIPE 13
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_SIGPIPE 1
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'write', 'stdio'.  */
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Maximum signal number + 1.  */
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef NSIG
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __TANDEM
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define NSIG 32
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pthread_sigmask
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pthread_sigmask rpl_pthread_sigmask
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pthread_sigmask, int,
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pthread_sigmask, int,
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pthread_sigmask, int,
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pthread_sigmask, int,
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pthread_sigmask);
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pthread_sigmask
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PTHREAD_SIGMASK
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pthread_sigmask for portability");
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef raise
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define raise rpl_raise
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (raise, int, (int sig));
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (raise, int, (int sig));
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (raise, int, (int sig));
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (raise, int, (int sig));
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (raise);
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef raise
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume raise is always declared.  */
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module raise for portability");
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef GNULIB_defined_signal_blocking
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_signal_blocking 1
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Maximum signal number + 1.  */
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef NSIG
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define NSIG 32
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This code supports only 32 signals.  */
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !GNULIB_defined_verify_NSIG_constraint
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_verify_NSIG_constraint 1
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Test whether a given signal is contained in a signal set.  */
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigismember
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigismember);
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initialize a signal set to the empty set.  */
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigemptyset
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigemptyset);
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Add a signal to a signal set.  */
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigaddset
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigaddset);
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Remove a signal from a signal set.  */
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigdelset
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigdelset);
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Fill a signal set with all possible signals.  */
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 1
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigfillset
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigfillset);
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the set of those blocked signals that are pending.  */
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigpending);
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Then, if SET is not NULL, affect the current set of blocked signals by
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   combining it with *SET as indicated in OPERATION.
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   In this implementation, you are not allowed to change a signal handler
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   while the signal is blocked.  */
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_SETMASK 1  /* blocked_set = *set; */
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigprocmask, int,
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int operation, const sigset_t *set, sigset_t *old_set));
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigprocmask, int,
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int operation, const sigset_t *set, sigset_t *old_set));
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigprocmask);
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Install the handler FUNC for signal SIG, and return the previous
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   handler.  */
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_function_taking_int_returning_void_t
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void (*_gl_function_taking_int_returning_void_t) (int);
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_function_taking_int_returning_void_t 1
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define signal rpl_signal
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (signal);
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1 && GNULIB_defined_SIGPIPE
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Raise signal SIGPIPE.  */
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigaddset
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGADDSET
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigdelset
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGDELSET
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigemptyset
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGEMPTYSET
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigfillset
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGFILLSET
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigismember
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGISMEMBER
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigpending
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGPENDING
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigprocmask
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGPROCMASK
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* 1 */
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !1
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !GNULIB_defined_siginfo_types
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Present to allow compilation, but unsupported by gnulib.  */
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wangunion sigval
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int sival_int;
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void *sival_ptr;
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Present to allow compilation, but unsupported by gnulib.  */
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct siginfo_t
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_signo;
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_code;
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_errno;
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  pid_t si_pid;
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  uid_t si_uid;
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void *si_addr;
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_status;
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  long si_band;
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  union sigval si_value;
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct siginfo_t siginfo_t;
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define GNULIB_defined_siginfo_types 1
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif /* !1 */
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* We assume that platforms which lack the sigaction() function also lack
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the 'struct sigaction' type, and vice versa.  */
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !GNULIB_defined_struct_sigaction
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct sigaction
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  union
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void (*_sa_handler) (int);
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Present to allow compilation, but unsupported by gnulib.  POSIX
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       says that implementations may, but not must, make sa_sigaction
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       overlap with sa_handler, but we know of no implementation where
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       they do not overlap.  */
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void (*_sa_sigaction) (int, siginfo_t *, void *);
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  } _sa_func;
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  sigset_t sa_mask;
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Not all POSIX flags are supported.  */
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int sa_flags;
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sa_handler _sa_func._sa_handler
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sa_sigaction _sa_func._sa_sigaction
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Unsupported flags are not present.  */
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_RESETHAND 1
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_NODEFER 2
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_RESTART 4
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_struct_sigaction 1
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   struct sigaction *restrict));
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif !1
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define sa_sigaction sa_handler
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif /* !1, !1 */
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   struct sigaction *restrict));
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigaction);
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigaction
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGACTION
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigaction for portability");
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Some systems don't have SA_NODEFER.  */
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef SA_NODEFER
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define SA_NODEFER 0
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_SIGNAL_H */
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_SIGNAL_H */
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
760