Home | History | Annotate | Download | only in linux-lib
      1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
      2 /* A GNU-like <signal.h>.
      3 
      4    Copyright (C) 2006-2012 Free Software Foundation, Inc.
      5 
      6    This program is free software: you can redistribute it and/or modify
      7    it under the terms of the GNU General Public License as published by
      8    the Free Software Foundation; either version 3 of the License, or
      9    (at your option) any later version.
     10 
     11    This program is distributed in the hope that it will be useful,
     12    but WITHOUT ANY WARRANTY; without even the implied warranty of
     13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14    GNU General Public License for more details.
     15 
     16    You should have received a copy of the GNU General Public License
     17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     18 
     19 #if __GNUC__ >= 3
     20 #pragma GCC system_header
     21 #endif
     22 
     23 
     24 #if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
     25 /* Special invocation convention:
     26    - Inside glibc header files.
     27    - On glibc systems we have a sequence of nested includes
     28      <signal.h> -> <ucontext.h> -> <signal.h>.
     29      In this situation, the functions are not yet declared, therefore we cannot
     30      provide the C++ aliases.
     31    - On glibc systems with GCC 4.3 we have a sequence of nested includes
     32      <csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
     33      In this situation, some of the functions are not yet declared, therefore
     34      we cannot provide the C++ aliases.  */
     35 
     36 # include_next <signal.h>
     37 
     38 #else
     39 /* Normal invocation convention.  */
     40 
     41 #ifndef _GL_SIGNAL_H
     42 
     43 #define _GL_ALREADY_INCLUDING_SIGNAL_H
     44 
     45 /* Define pid_t, uid_t.
     46    Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
     47    On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
     48    us; so include <sys/types.h> now, before the second inclusion guard.  */
     49 #include <sys/types.h>
     50 
     51 /* The include_next requires a split double-inclusion guard.  */
     52 #include_next <signal.h>
     53 
     54 #undef _GL_ALREADY_INCLUDING_SIGNAL_H
     55 
     56 #ifndef _GL_SIGNAL_H
     57 #define _GL_SIGNAL_H
     58 
     59 /* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare
     60    pthread_sigmask in <pthread.h>, not in <signal.h>.
     61    But avoid namespace pollution on glibc systems.*/
     62 #if (0 || defined GNULIB_POSIXCHECK) \
     63     && ((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ || defined __sun) \
     64     && ! defined __GLIBC__
     65 # include <pthread.h>
     66 #endif
     67 
     68 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
     69 #ifndef _GL_CXXDEFS_H
     70 #define _GL_CXXDEFS_H
     71 
     72 /* The three most frequent use cases of these macros are:
     73 
     74    * For providing a substitute for a function that is missing on some
     75      platforms, but is declared and works fine on the platforms on which
     76      it exists:
     77 
     78        #if @GNULIB_FOO@
     79        # if !@HAVE_FOO@
     80        _GL_FUNCDECL_SYS (foo, ...);
     81        # endif
     82        _GL_CXXALIAS_SYS (foo, ...);
     83        _GL_CXXALIASWARN (foo);
     84        #elif defined GNULIB_POSIXCHECK
     85        ...
     86        #endif
     87 
     88    * For providing a replacement for a function that exists on all platforms,
     89      but is broken/insufficient and needs to be replaced on some platforms:
     90 
     91        #if @GNULIB_FOO@
     92        # if @REPLACE_FOO@
     93        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
     94        #   undef foo
     95        #   define foo rpl_foo
     96        #  endif
     97        _GL_FUNCDECL_RPL (foo, ...);
     98        _GL_CXXALIAS_RPL (foo, ...);
     99        # else
    100        _GL_CXXALIAS_SYS (foo, ...);
    101        # endif
    102        _GL_CXXALIASWARN (foo);
    103        #elif defined GNULIB_POSIXCHECK
    104        ...
    105        #endif
    106 
    107    * For providing a replacement for a function that exists on some platforms
    108      but is broken/insufficient and needs to be replaced on some of them and
    109      is additionally either missing or undeclared on some other platforms:
    110 
    111        #if @GNULIB_FOO@
    112        # if @REPLACE_FOO@
    113        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    114        #   undef foo
    115        #   define foo rpl_foo
    116        #  endif
    117        _GL_FUNCDECL_RPL (foo, ...);
    118        _GL_CXXALIAS_RPL (foo, ...);
    119        # else
    120        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
    121        _GL_FUNCDECL_SYS (foo, ...);
    122        #  endif
    123        _GL_CXXALIAS_SYS (foo, ...);
    124        # endif
    125        _GL_CXXALIASWARN (foo);
    126        #elif defined GNULIB_POSIXCHECK
    127        ...
    128        #endif
    129 */
    130 
    131 /* _GL_EXTERN_C declaration;
    132    performs the declaration with C linkage.  */
    133 #if defined __cplusplus
    134 # define _GL_EXTERN_C extern "C"
    135 #else
    136 # define _GL_EXTERN_C extern
    137 #endif
    138 
    139 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
    140    declares a replacement function, named rpl_func, with the given prototype,
    141    consisting of return type, parameters, and attributes.
    142    Example:
    143      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
    144                                   _GL_ARG_NONNULL ((1)));
    145  */
    146 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
    147   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
    148 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
    149   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
    150 
    151 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
    152    declares the system function, named func, with the given prototype,
    153    consisting of return type, parameters, and attributes.
    154    Example:
    155      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
    156                                   _GL_ARG_NONNULL ((1)));
    157  */
    158 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
    159   _GL_EXTERN_C rettype func parameters_and_attributes
    160 
    161 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
    162    declares a C++ alias called GNULIB_NAMESPACE::func
    163    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
    164    Example:
    165      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
    166  */
    167 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
    168   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
    169 #if defined __cplusplus && defined GNULIB_NAMESPACE
    170 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    171     namespace GNULIB_NAMESPACE                                \
    172     {                                                         \
    173       rettype (*const func) parameters = ::rpl_func;          \
    174     }                                                         \
    175     _GL_EXTERN_C int _gl_cxxalias_dummy
    176 #else
    177 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    178     _GL_EXTERN_C int _gl_cxxalias_dummy
    179 #endif
    180 
    181 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
    182    is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
    183    except that the C function rpl_func may have a slightly different
    184    declaration.  A cast is used to silence the "invalid conversion" error
    185    that would otherwise occur.  */
    186 #if defined __cplusplus && defined GNULIB_NAMESPACE
    187 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    188     namespace GNULIB_NAMESPACE                                     \
    189     {                                                              \
    190       rettype (*const func) parameters =                           \
    191         reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
    192     }                                                              \
    193     _GL_EXTERN_C int _gl_cxxalias_dummy
    194 #else
    195 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    196     _GL_EXTERN_C int _gl_cxxalias_dummy
    197 #endif
    198 
    199 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
    200    declares a C++ alias called GNULIB_NAMESPACE::func
    201    that redirects to the system provided function func, if GNULIB_NAMESPACE
    202    is defined.
    203    Example:
    204      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
    205  */
    206 #if defined __cplusplus && defined GNULIB_NAMESPACE
    207   /* If we were to write
    208        rettype (*const func) parameters = ::func;
    209      like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
    210      better (remove an indirection through a 'static' pointer variable),
    211      but then the _GL_CXXALIASWARN macro below would cause a warning not only
    212      for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
    213 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
    214     namespace GNULIB_NAMESPACE                     \
    215     {                                              \
    216       static rettype (*func) parameters = ::func;  \
    217     }                                              \
    218     _GL_EXTERN_C int _gl_cxxalias_dummy
    219 #else
    220 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
    221     _GL_EXTERN_C int _gl_cxxalias_dummy
    222 #endif
    223 
    224 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
    225    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    226    except that the C function func may have a slightly different declaration.
    227    A cast is used to silence the "invalid conversion" error that would
    228    otherwise occur.  */
    229 #if defined __cplusplus && defined GNULIB_NAMESPACE
    230 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    231     namespace GNULIB_NAMESPACE                          \
    232     {                                                   \
    233       static rettype (*func) parameters =               \
    234         reinterpret_cast<rettype(*)parameters>(::func); \
    235     }                                                   \
    236     _GL_EXTERN_C int _gl_cxxalias_dummy
    237 #else
    238 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    239     _GL_EXTERN_C int _gl_cxxalias_dummy
    240 #endif
    241 
    242 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
    243    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    244    except that the C function is picked among a set of overloaded functions,
    245    namely the one with rettype2 and parameters2.  Two consecutive casts
    246    are used to silence the "cannot find a match" and "invalid conversion"
    247    errors that would otherwise occur.  */
    248 #if defined __cplusplus && defined GNULIB_NAMESPACE
    249   /* The outer cast must be a reinterpret_cast.
    250      The inner cast: When the function is defined as a set of overloaded
    251      functions, it works as a static_cast<>, choosing the designated variant.
    252      When the function is defined as a single variant, it works as a
    253      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
    254 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    255     namespace GNULIB_NAMESPACE                                                \
    256     {                                                                         \
    257       static rettype (*func) parameters =                                     \
    258         reinterpret_cast<rettype(*)parameters>(                               \
    259           (rettype2(*)parameters2)(::func));                                  \
    260     }                                                                         \
    261     _GL_EXTERN_C int _gl_cxxalias_dummy
    262 #else
    263 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    264     _GL_EXTERN_C int _gl_cxxalias_dummy
    265 #endif
    266 
    267 /* _GL_CXXALIASWARN (func);
    268    causes a warning to be emitted when ::func is used but not when
    269    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
    270    variants.  */
    271 #if defined __cplusplus && defined GNULIB_NAMESPACE
    272 # define _GL_CXXALIASWARN(func) \
    273    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
    274 # define _GL_CXXALIASWARN_1(func,namespace) \
    275    _GL_CXXALIASWARN_2 (func, namespace)
    276 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    277    we enable the warning only when not optimizing.  */
    278 # if !__OPTIMIZE__
    279 #  define _GL_CXXALIASWARN_2(func,namespace) \
    280     _GL_WARN_ON_USE (func, \
    281                      "The symbol ::" #func " refers to the system function. " \
    282                      "Use " #namespace "::" #func " instead.")
    283 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    284 #  define _GL_CXXALIASWARN_2(func,namespace) \
    285      extern __typeof__ (func) func
    286 # else
    287 #  define _GL_CXXALIASWARN_2(func,namespace) \
    288      _GL_EXTERN_C int _gl_cxxalias_dummy
    289 # endif
    290 #else
    291 # define _GL_CXXALIASWARN(func) \
    292     _GL_EXTERN_C int _gl_cxxalias_dummy
    293 #endif
    294 
    295 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
    296    causes a warning to be emitted when the given overloaded variant of ::func
    297    is used but not when GNULIB_NAMESPACE::func is used.  */
    298 #if defined __cplusplus && defined GNULIB_NAMESPACE
    299 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    300    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
    301                         GNULIB_NAMESPACE)
    302 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
    303    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
    304 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    305    we enable the warning only when not optimizing.  */
    306 # if !__OPTIMIZE__
    307 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    308     _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
    309                          "The symbol ::" #func " refers to the system function. " \
    310                          "Use " #namespace "::" #func " instead.")
    311 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    312 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    313      extern __typeof__ (func) func
    314 # else
    315 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    316      _GL_EXTERN_C int _gl_cxxalias_dummy
    317 # endif
    318 #else
    319 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    320     _GL_EXTERN_C int _gl_cxxalias_dummy
    321 #endif
    322 
    323 #endif /* _GL_CXXDEFS_H */
    324 
    325 /* The definition of _GL_ARG_NONNULL is copied here.  */
    326 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
    327    that the values passed as arguments n, ..., m must be non-NULL pointers.
    328    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
    329 #ifndef _GL_ARG_NONNULL
    330 # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
    331 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
    332 # else
    333 #  define _GL_ARG_NONNULL(params)
    334 # endif
    335 #endif
    336 
    337 /* The definition of _GL_WARN_ON_USE is copied here.  */
    338 #ifndef _GL_WARN_ON_USE
    339 
    340 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    341 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
    342 #  define _GL_WARN_ON_USE(function, message) \
    343 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
    344 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    345 /* Verify the existence of the function.  */
    346 #  define _GL_WARN_ON_USE(function, message) \
    347 extern __typeof__ (function) function
    348 # else /* Unsupported.  */
    349 #  define _GL_WARN_ON_USE(function, message) \
    350 _GL_WARN_EXTERN_C int _gl_warn_on_use
    351 # endif
    352 #endif
    353 
    354 /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
    355    is like _GL_WARN_ON_USE (function, "string"), except that the function is
    356    declared with the given prototype, consisting of return type, parameters,
    357    and attributes.
    358    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
    359    not work in this case.  */
    360 #ifndef _GL_WARN_ON_USE_CXX
    361 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    362 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
    363 extern rettype function parameters_and_attributes \
    364      __attribute__ ((__warning__ (msg)))
    365 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    366 /* Verify the existence of the function.  */
    367 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
    368 extern rettype function parameters_and_attributes
    369 # else /* Unsupported.  */
    370 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
    371 _GL_WARN_EXTERN_C int _gl_warn_on_use
    372 # endif
    373 #endif
    374 
    375 /* _GL_WARN_EXTERN_C declaration;
    376    performs the declaration with C linkage.  */
    377 #ifndef _GL_WARN_EXTERN_C
    378 # if defined __cplusplus
    379 #  define _GL_WARN_EXTERN_C extern "C"
    380 # else
    381 #  define _GL_WARN_EXTERN_C extern
    382 # endif
    383 #endif
    384 
    385 /* On AIX, sig_atomic_t already includes volatile.  C99 requires that
    386    'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
    387    Hence, redefine this to a non-volatile type as needed.  */
    388 #if ! 1
    389 # if !GNULIB_defined_sig_atomic_t
    390 typedef int rpl_sig_atomic_t;
    391 #  undef sig_atomic_t
    392 #  define sig_atomic_t rpl_sig_atomic_t
    393 #  define GNULIB_defined_sig_atomic_t 1
    394 # endif
    395 #endif
    396 
    397 /* A set or mask of signals.  */
    398 #if !1
    399 # if !GNULIB_defined_sigset_t
    400 typedef unsigned int sigset_t;
    401 #  define GNULIB_defined_sigset_t 1
    402 # endif
    403 #endif
    404 
    405 /* Define sighandler_t, the type of signal handlers.  A GNU extension.  */
    406 #if !1
    407 # ifdef __cplusplus
    408 extern "C" {
    409 # endif
    410 # if !GNULIB_defined_sighandler_t
    411 typedef void (*sighandler_t) (int);
    412 #  define GNULIB_defined_sighandler_t 1
    413 # endif
    414 # ifdef __cplusplus
    415 }
    416 # endif
    417 #endif
    418 
    419 
    420 #if 0
    421 # ifndef SIGPIPE
    422 /* Define SIGPIPE to a value that does not overlap with other signals.  */
    423 #  define SIGPIPE 13
    424 #  define GNULIB_defined_SIGPIPE 1
    425 /* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
    426    'write', 'stdio'.  */
    427 # endif
    428 #endif
    429 
    430 
    431 /* Maximum signal number + 1.  */
    432 #ifndef NSIG
    433 # if defined __TANDEM
    434 #  define NSIG 32
    435 # endif
    436 #endif
    437 
    438 
    439 #if 0
    440 # if 0
    441 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    442 #   undef pthread_sigmask
    443 #   define pthread_sigmask rpl_pthread_sigmask
    444 #  endif
    445 _GL_FUNCDECL_RPL (pthread_sigmask, int,
    446                   (int how, const sigset_t *new_mask, sigset_t *old_mask));
    447 _GL_CXXALIAS_RPL (pthread_sigmask, int,
    448                   (int how, const sigset_t *new_mask, sigset_t *old_mask));
    449 # else
    450 #  if !1
    451 _GL_FUNCDECL_SYS (pthread_sigmask, int,
    452                   (int how, const sigset_t *new_mask, sigset_t *old_mask));
    453 #  endif
    454 _GL_CXXALIAS_SYS (pthread_sigmask, int,
    455                   (int how, const sigset_t *new_mask, sigset_t *old_mask));
    456 # endif
    457 _GL_CXXALIASWARN (pthread_sigmask);
    458 #elif defined GNULIB_POSIXCHECK
    459 # undef pthread_sigmask
    460 # if HAVE_RAW_DECL_PTHREAD_SIGMASK
    461 _GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
    462                  "use gnulib module pthread_sigmask for portability");
    463 # endif
    464 #endif
    465 
    466 
    467 #if 1
    468 # if 0
    469 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    470 #   undef raise
    471 #   define raise rpl_raise
    472 #  endif
    473 _GL_FUNCDECL_RPL (raise, int, (int sig));
    474 _GL_CXXALIAS_RPL (raise, int, (int sig));
    475 # else
    476 #  if !1
    477 _GL_FUNCDECL_SYS (raise, int, (int sig));
    478 #  endif
    479 _GL_CXXALIAS_SYS (raise, int, (int sig));
    480 # endif
    481 _GL_CXXALIASWARN (raise);
    482 #elif defined GNULIB_POSIXCHECK
    483 # undef raise
    484 /* Assume raise is always declared.  */
    485 _GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
    486                  "use gnulib module raise for portability");
    487 #endif
    488 
    489 
    490 #if 1
    491 # if !1
    492 
    493 #  ifndef GNULIB_defined_signal_blocking
    494 #   define GNULIB_defined_signal_blocking 1
    495 #  endif
    496 
    497 /* Maximum signal number + 1.  */
    498 #  ifndef NSIG
    499 #   define NSIG 32
    500 #  endif
    501 
    502 /* This code supports only 32 signals.  */
    503 #  if !GNULIB_defined_verify_NSIG_constraint
    504 typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
    505 #   define GNULIB_defined_verify_NSIG_constraint 1
    506 #  endif
    507 
    508 # endif
    509 
    510 /* Test whether a given signal is contained in a signal set.  */
    511 # if 1
    512 /* This function is defined as a macro on Mac OS X.  */
    513 #  if defined __cplusplus && defined GNULIB_NAMESPACE
    514 #   undef sigismember
    515 #  endif
    516 # else
    517 _GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
    518                                     _GL_ARG_NONNULL ((1)));
    519 # endif
    520 _GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
    521 _GL_CXXALIASWARN (sigismember);
    522 
    523 /* Initialize a signal set to the empty set.  */
    524 # if 1
    525 /* This function is defined as a macro on Mac OS X.  */
    526 #  if defined __cplusplus && defined GNULIB_NAMESPACE
    527 #   undef sigemptyset
    528 #  endif
    529 # else
    530 _GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
    531 # endif
    532 _GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
    533 _GL_CXXALIASWARN (sigemptyset);
    534 
    535 /* Add a signal to a signal set.  */
    536 # if 1
    537 /* This function is defined as a macro on Mac OS X.  */
    538 #  if defined __cplusplus && defined GNULIB_NAMESPACE
    539 #   undef sigaddset
    540 #  endif
    541 # else
    542 _GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
    543                                   _GL_ARG_NONNULL ((1)));
    544 # endif
    545 _GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
    546 _GL_CXXALIASWARN (sigaddset);
    547 
    548 /* Remove a signal from a signal set.  */
    549 # if 1
    550 /* This function is defined as a macro on Mac OS X.  */
    551 #  if defined __cplusplus && defined GNULIB_NAMESPACE
    552 #   undef sigdelset
    553 #  endif
    554 # else
    555 _GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
    556                                   _GL_ARG_NONNULL ((1)));
    557 # endif
    558 _GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
    559 _GL_CXXALIASWARN (sigdelset);
    560 
    561 /* Fill a signal set with all possible signals.  */
    562 # if 1
    563 /* This function is defined as a macro on Mac OS X.  */
    564 #  if defined __cplusplus && defined GNULIB_NAMESPACE
    565 #   undef sigfillset
    566 #  endif
    567 # else
    568 _GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
    569 # endif
    570 _GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
    571 _GL_CXXALIASWARN (sigfillset);
    572 
    573 /* Return the set of those blocked signals that are pending.  */
    574 # if !1
    575 _GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
    576 # endif
    577 _GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
    578 _GL_CXXALIASWARN (sigpending);
    579 
    580 /* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
    581    Then, if SET is not NULL, affect the current set of blocked signals by
    582    combining it with *SET as indicated in OPERATION.
    583    In this implementation, you are not allowed to change a signal handler
    584    while the signal is blocked.  */
    585 # if !1
    586 #  define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
    587 #  define SIG_SETMASK 1  /* blocked_set = *set; */
    588 #  define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
    589 _GL_FUNCDECL_SYS (sigprocmask, int,
    590                   (int operation, const sigset_t *set, sigset_t *old_set));
    591 # endif
    592 _GL_CXXALIAS_SYS (sigprocmask, int,
    593                   (int operation, const sigset_t *set, sigset_t *old_set));
    594 _GL_CXXALIASWARN (sigprocmask);
    595 
    596 /* Install the handler FUNC for signal SIG, and return the previous
    597    handler.  */
    598 # ifdef __cplusplus
    599 extern "C" {
    600 # endif
    601 # if !GNULIB_defined_function_taking_int_returning_void_t
    602 typedef void (*_gl_function_taking_int_returning_void_t) (int);
    603 #  define GNULIB_defined_function_taking_int_returning_void_t 1
    604 # endif
    605 # ifdef __cplusplus
    606 }
    607 # endif
    608 # if !1
    609 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    610 #   define signal rpl_signal
    611 #  endif
    612 _GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
    613                   (int sig, _gl_function_taking_int_returning_void_t func));
    614 _GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
    615                   (int sig, _gl_function_taking_int_returning_void_t func));
    616 # else
    617 _GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
    618                   (int sig, _gl_function_taking_int_returning_void_t func));
    619 # endif
    620 _GL_CXXALIASWARN (signal);
    621 
    622 # if !1 && GNULIB_defined_SIGPIPE
    623 /* Raise signal SIGPIPE.  */
    624 _GL_EXTERN_C int _gl_raise_SIGPIPE (void);
    625 # endif
    626 
    627 #elif defined GNULIB_POSIXCHECK
    628 # undef sigaddset
    629 # if HAVE_RAW_DECL_SIGADDSET
    630 _GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
    631                  "use the gnulib module sigprocmask for portability");
    632 # endif
    633 # undef sigdelset
    634 # if HAVE_RAW_DECL_SIGDELSET
    635 _GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
    636                  "use the gnulib module sigprocmask for portability");
    637 # endif
    638 # undef sigemptyset
    639 # if HAVE_RAW_DECL_SIGEMPTYSET
    640 _GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
    641                  "use the gnulib module sigprocmask for portability");
    642 # endif
    643 # undef sigfillset
    644 # if HAVE_RAW_DECL_SIGFILLSET
    645 _GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
    646                  "use the gnulib module sigprocmask for portability");
    647 # endif
    648 # undef sigismember
    649 # if HAVE_RAW_DECL_SIGISMEMBER
    650 _GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
    651                  "use the gnulib module sigprocmask for portability");
    652 # endif
    653 # undef sigpending
    654 # if HAVE_RAW_DECL_SIGPENDING
    655 _GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
    656                  "use the gnulib module sigprocmask for portability");
    657 # endif
    658 # undef sigprocmask
    659 # if HAVE_RAW_DECL_SIGPROCMASK
    660 _GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
    661                  "use the gnulib module sigprocmask for portability");
    662 # endif
    663 #endif /* 1 */
    664 
    665 
    666 #if 1
    667 # if !1
    668 
    669 #  if !1
    670 
    671 #   if !GNULIB_defined_siginfo_types
    672 
    673 /* Present to allow compilation, but unsupported by gnulib.  */
    674 union sigval
    675 {
    676   int sival_int;
    677   void *sival_ptr;
    678 };
    679 
    680 /* Present to allow compilation, but unsupported by gnulib.  */
    681 struct siginfo_t
    682 {
    683   int si_signo;
    684   int si_code;
    685   int si_errno;
    686   pid_t si_pid;
    687   uid_t si_uid;
    688   void *si_addr;
    689   int si_status;
    690   long si_band;
    691   union sigval si_value;
    692 };
    693 typedef struct siginfo_t siginfo_t;
    694 
    695 #    define GNULIB_defined_siginfo_types 1
    696 #   endif
    697 
    698 #  endif /* !1 */
    699 
    700 /* We assume that platforms which lack the sigaction() function also lack
    701    the 'struct sigaction' type, and vice versa.  */
    702 
    703 #  if !GNULIB_defined_struct_sigaction
    704 
    705 struct sigaction
    706 {
    707   union
    708   {
    709     void (*_sa_handler) (int);
    710     /* Present to allow compilation, but unsupported by gnulib.  POSIX
    711        says that implementations may, but not must, make sa_sigaction
    712        overlap with sa_handler, but we know of no implementation where
    713        they do not overlap.  */
    714     void (*_sa_sigaction) (int, siginfo_t *, void *);
    715   } _sa_func;
    716   sigset_t sa_mask;
    717   /* Not all POSIX flags are supported.  */
    718   int sa_flags;
    719 };
    720 #   define sa_handler _sa_func._sa_handler
    721 #   define sa_sigaction _sa_func._sa_sigaction
    722 /* Unsupported flags are not present.  */
    723 #   define SA_RESETHAND 1
    724 #   define SA_NODEFER 2
    725 #   define SA_RESTART 4
    726 
    727 #   define GNULIB_defined_struct_sigaction 1
    728 #  endif
    729 
    730 _GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
    731                                    struct sigaction *restrict));
    732 
    733 # elif !1
    734 
    735 #  define sa_sigaction sa_handler
    736 
    737 # endif /* !1, !1 */
    738 
    739 _GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
    740                                    struct sigaction *restrict));
    741 _GL_CXXALIASWARN (sigaction);
    742 
    743 #elif defined GNULIB_POSIXCHECK
    744 # undef sigaction
    745 # if HAVE_RAW_DECL_SIGACTION
    746 _GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
    747                  "use the gnulib module sigaction for portability");
    748 # endif
    749 #endif
    750 
    751 /* Some systems don't have SA_NODEFER.  */
    752 #ifndef SA_NODEFER
    753 # define SA_NODEFER 0
    754 #endif
    755 
    756 
    757 #endif /* _GL_SIGNAL_H */
    758 #endif /* _GL_SIGNAL_H */
    759 #endif
    760