Branch data Line data Source code
1 : : /* Test of <signal.h> substitute.
2 : : Copyright (C) 2009-2012 Free Software Foundation, Inc.
3 : :
4 : : This program is free software: you can redistribute it and/or modify
5 : : it under the terms of the GNU General Public License as published by
6 : : the Free Software Foundation; either version 3 of the License, or
7 : : (at your option) any later version.
8 : :
9 : : This program is distributed in the hope that it will be useful,
10 : : but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : : GNU General Public License for more details.
13 : :
14 : : You should have received a copy of the GNU General Public License
15 : : along with this program. If not, see <http://www.gnu.org/licenses/>. */
16 : :
17 : : /* Written by Eric Blake <ebb9@byu.net>, 2009. */
18 : :
19 : : #include <config.h>
20 : :
21 : : #include <signal.h>
22 : :
23 : : /* Check for required types. */
24 : : struct
25 : : {
26 : : size_t a;
27 : : uid_t b;
28 : : volatile sig_atomic_t c;
29 : : sigset_t d;
30 : : pid_t e;
31 : : #if 0
32 : : /* Not guaranteed by gnulib. */
33 : : pthread_t f;
34 : : struct timespec g;
35 : : #endif
36 : : } s;
37 : :
38 : : /* Check that NSIG is defined. */
39 : : int nsig = NSIG;
40 : :
41 : : int
42 : 1 : main (void)
43 : : {
44 : : switch (0)
45 : : {
46 : : /* The following are guaranteed by C. */
47 : : case 0:
48 : : case SIGABRT:
49 : : case SIGFPE:
50 : : case SIGILL:
51 : : case SIGINT:
52 : : case SIGSEGV:
53 : : case SIGTERM:
54 : : /* The following is guaranteed by gnulib. */
55 : : #if GNULIB_SIGPIPE || defined SIGPIPE
56 : : case SIGPIPE:
57 : : #endif
58 : : /* Ensure no conflict with other standardized names. */
59 : : #ifdef SIGALRM
60 : : case SIGALRM:
61 : : #endif
62 : : /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */
63 : : #if defined SIGBUS && SIGBUS != SIGSEGV
64 : : case SIGBUS:
65 : : #endif
66 : : #ifdef SIGCHLD
67 : : case SIGCHLD:
68 : : #endif
69 : : #ifdef SIGCONT
70 : : case SIGCONT:
71 : : #endif
72 : : #ifdef SIGHUP
73 : : case SIGHUP:
74 : : #endif
75 : : #ifdef SIGKILL
76 : : case SIGKILL:
77 : : #endif
78 : : #ifdef SIGQUIT
79 : : case SIGQUIT:
80 : : #endif
81 : : #ifdef SIGSTOP
82 : : case SIGSTOP:
83 : : #endif
84 : : #ifdef SIGTSTP
85 : : case SIGTSTP:
86 : : #endif
87 : : #ifdef SIGTTIN
88 : : case SIGTTIN:
89 : : #endif
90 : : #ifdef SIGTTOU
91 : : case SIGTTOU:
92 : : #endif
93 : : #ifdef SIGUSR1
94 : : case SIGUSR1:
95 : : #endif
96 : : #ifdef SIGUSR2
97 : : case SIGUSR2:
98 : : #endif
99 : : #ifdef SIGSYS
100 : : case SIGSYS:
101 : : #endif
102 : : #ifdef SIGTRAP
103 : : case SIGTRAP:
104 : : #endif
105 : : #ifdef SIGURG
106 : : case SIGURG:
107 : : #endif
108 : : #ifdef SIGVTALRM
109 : : case SIGVTALRM:
110 : : #endif
111 : : #ifdef SIGXCPU
112 : : case SIGXCPU:
113 : : #endif
114 : : #ifdef SIGXFSZ
115 : : case SIGXFSZ:
116 : : #endif
117 : : /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */
118 : : #if 0
119 : : # ifdef SIGRTMIN
120 : : case SIGRTMIN:
121 : : # endif
122 : : # ifdef SIGRTMAX
123 : : case SIGRTMAX:
124 : : # endif
125 : : #endif
126 : : ;
127 : : }
128 : 1 : return s.a + s.b + s.c + s.e;
129 : : }
|