X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsignal.in.h;h=5c42fe9e260fb003210e6a66e240a6bb0518a214;hb=6a9b156fdf9c71c0bbc8bb0b3aa0262df5674dda;hp=a1c9e6f6d38dcc84639631d3d8371dad9fbb887e;hpb=371a3a2d058f3709baeeb0dbe18ae21ddb11ea90;p=gnulib.git diff --git a/lib/signal.in.h b/lib/signal.in.h index a1c9e6f6d..5c42fe9e2 100644 --- a/lib/signal.in.h +++ b/lib/signal.in.h @@ -1,6 +1,6 @@ /* A GNU-like . - Copyright (C) 2006-2008 Free Software Foundation, Inc. + Copyright (C) 2006-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,6 +15,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + #if defined __need_sig_atomic_t || defined __need_sigset_t /* Special invocation convention inside glibc header files. */ @@ -37,11 +41,31 @@ Also, mingw defines sigset_t not in , but in . */ #include +/* On AIX, sig_atomic_t already includes volatile. C99 requires that + 'volatile sig_atomic_t' ignore the extra modifier, but C89 did not. + Hence, redefine this to a non-volatile type as needed. */ +#if ! @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +typedef int rpl_sig_atomic_t; +# undef sig_atomic_t +# define sig_atomic_t rpl_sig_atomic_t +#endif + #ifdef __cplusplus extern "C" { #endif +#if @GNULIB_SIGNAL_H_SIGPIPE@ +# ifndef SIGPIPE +/* Define SIGPIPE to a value that does not overlap with other signals. */ +# define SIGPIPE 13 +# define GNULIB_defined_SIGPIPE 1 +/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask', + 'write', 'stdio'. */ +# endif +#endif + + #if !@HAVE_POSIX_SIGNALBLOCKING@ /* Maximum signal number + 1. */ @@ -90,8 +114,18 @@ extern int sigprocmask (int operation, const sigset_t *set, sigset_t *old_set); handler. */ extern void (*signal (int sig, void (*func) (int))) (int); +# if GNULIB_defined_SIGPIPE + +/* Raise signal SIG. */ +# undef raise +# define raise rpl_raise +extern int raise (int sig); + +# endif + #endif /* !@HAVE_POSIX_SIGNALBLOCKING@ */ + #if !@HAVE_SIGACTION@ # if !@HAVE_SIGINFO_T@ @@ -118,9 +152,8 @@ struct siginfo_t typedef struct siginfo_t siginfo_t; # endif /* !@HAVE_SIGINFO_T@ */ - /* Due to autoconf conventions, we can't tell if HAVE_SIGACTION - means we have the type or means we have the function. We assume - that all implementations either have both or neither. */ +/* We assume that platforms which lack the sigaction() function also lack + the 'struct sigaction' type, and vice versa. */ struct sigaction { @@ -147,7 +180,17 @@ struct sigaction extern int sigaction (int, const struct sigaction *restrict, struct sigaction *restrict); -#endif /* !@HAVE_SIGACTION@ */ +#elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ + +# define sa_sigaction sa_handler + +#endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ + + +/* Some systems don't have SA_NODEFER. */ +#ifndef SA_NODEFER +# define SA_NODEFER 0 +#endif #ifdef __cplusplus