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 |