| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/sig-handler.h |
| Source code | Switch to Preprocessed file |
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 1 | /* Convenience declarations when working with <signal.h>. | - | ||||||
| 2 | - | |||||||
| 3 | Copyright (C) 2008-2018 Free Software Foundation, Inc. | - | ||||||
| 4 | - | |||||||
| 5 | This program is free software: you can redistribute it and/or modify | - | ||||||
| 6 | it under the terms of the GNU General Public License as published by | - | ||||||
| 7 | the Free Software Foundation; either version 3 of the License, or | - | ||||||
| 8 | (at your option) any later version. | - | ||||||
| 9 | - | |||||||
| 10 | This program is distributed in the hope that it will be useful, | - | ||||||
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | - | ||||||
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | - | ||||||
| 13 | GNU General Public License for more details. | - | ||||||
| 14 | - | |||||||
| 15 | You should have received a copy of the GNU General Public License | - | ||||||
| 16 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ | - | ||||||
| 17 | - | |||||||
| 18 | #ifndef _GL_SIG_HANDLER_H | - | ||||||
| 19 | #define _GL_SIG_HANDLER_H | - | ||||||
| 20 | - | |||||||
| 21 | #include <signal.h> | - | ||||||
| 22 | - | |||||||
| 23 | #ifndef _GL_INLINE_HEADER_BEGIN | - | ||||||
| 24 | #error "Please include config.h first." | - | ||||||
| 25 | #endif | - | ||||||
| 26 | _GL_INLINE_HEADER_BEGIN | - | ||||||
| 27 | #ifndef SIG_HANDLER_INLINE | - | ||||||
| 28 | # define SIG_HANDLER_INLINE _GL_INLINE | - | ||||||
| 29 | #endif | - | ||||||
| 30 | - | |||||||
| 31 | /* Convenience type when working with signal handlers. */ | - | ||||||
| 32 | typedef void (*sa_handler_t) (int); | - | ||||||
| 33 | - | |||||||
| 34 | /* Return the handler of a signal, as a sa_handler_t value regardless | - | ||||||
| 35 | of its true type. The resulting function can be compared to | - | ||||||
| 36 | special values like SIG_IGN but it is not portable to call it. */ | - | ||||||
| 37 | SIG_HANDLER_INLINE sa_handler_t _GL_ATTRIBUTE_PURE | - | ||||||
| 38 | get_handler (struct sigaction const *a) | - | ||||||
| 39 | { | - | ||||||
| 40 | #ifdef SA_SIGINFO | - | ||||||
| 41 | /* POSIX says that special values like SIG_IGN can only occur when | - | ||||||
| 42 | action.sa_flags does not contain SA_SIGINFO. But in Linux 2.4, | - | ||||||
| 43 | for example, sa_sigaction and sa_handler are aliases and a signal | - | ||||||
| 44 | is ignored if sa_sigaction (after casting) equals SIG_IGN. So | - | ||||||
| 45 | use (and cast) sa_sigaction in that case. */ | - | ||||||
| 46 | if (a->sa_flags & SA_SIGINFO)
| 0 | ||||||
| 47 | return (sa_handler_t) a->sa_sigaction; never executed: return (sa_handler_t) a-> __sigaction_handler.sa_sigaction ; | 0 | ||||||
| 48 | #endif | - | ||||||
| 49 | return a->sa_handler; never executed: return a-> __sigaction_handler.sa_handler ; | 0 | ||||||
| 50 | } | - | ||||||
| 51 | - | |||||||
| 52 | _GL_INLINE_HEADER_END | - | ||||||
| 53 | - | |||||||
| 54 | #endif /* _GL_SIG_HANDLER_H */ | - | ||||||
| Source code | Switch to Preprocessed file |