Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtksh / ksh93 / src / lib / libast / misc / signal.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: signal.c /main/4 1996/09/09 11:00:49 rswiston $ */
24 /***************************************************************
25 *                                                              *
26 *                      AT&T - PROPRIETARY                      *
27 *                                                              *
28 *         THIS IS PROPRIETARY SOURCE CODE LICENSED BY          *
29 *                          AT&T CORP.                          *
30 *                                                              *
31 *                Copyright (c) 1995 AT&T Corp.                 *
32 *                     All Rights Reserved                      *
33 *                                                              *
34 *           This software is licensed by AT&T Corp.            *
35 *       under the terms and conditions of the license in       *
36 *       http://www.research.att.com/orgs/ssr/book/reuse        *
37 *                                                              *
38 *               This software was created by the               *
39 *           Software Engineering Research Department           *
40 *                    AT&T Bell Laboratories                    *
41 *                                                              *
42 *               For further information contact                *
43 *                     gsf@research.att.com                     *
44 *                                                              *
45 ***************************************************************/
46
47 /* : : generated by proto : : */
48
49 #if !defined(__PROTO__)
50 #if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
51 #if defined(__cplusplus)
52 #define __MANGLE__      "C"
53 #else
54 #define __MANGLE__
55 #endif
56 #define __STDARG__
57 #define __PROTO__(x)    x
58 #define __OTORP__(x)
59 #define __PARAM__(n,o)  n
60 #if !defined(__STDC__) && !defined(__cplusplus)
61 #if !defined(c_plusplus)
62 #define const
63 #endif
64 #define signed
65 #define void            int
66 #define volatile
67 #define __V_            char
68 #else
69 #define __V_            void
70 #endif
71 #else
72 #define __PROTO__(x)    ()
73 #define __OTORP__(x)    x
74 #define __PARAM__(n,o)  o
75 #define __MANGLE__
76 #define __V_            char
77 #define const
78 #define signed
79 #define void            int
80 #define volatile
81 #endif
82 #if defined(__cplusplus) || defined(c_plusplus)
83 #define __VARARG__      ...
84 #else
85 #define __VARARG__
86 #endif
87 #if defined(__STDARG__)
88 #define __VA_START__(p,a)       va_start(p,a)
89 #else
90 #define __VA_START__(p,a)       va_start(p)
91 #endif
92 #endif
93 #if defined(__STDPP__directive) && defined(__STDPP__hide)
94 __STDPP__directive pragma pp:hide signal
95 #else
96 #define signal          ______signal
97 #endif
98
99 #include <ast.h>
100 #include <sig.h>
101
102 #if defined(__STDPP__directive) && defined(__STDPP__hide)
103 __STDPP__directive pragma pp:nohide signal
104 #else
105 #undef  signal
106 #endif
107
108 #if !_std_signal && (_lib_sigaction && defined(SA_NOCLDSTOP) || _lib_sigvec && defined(SV_INTERRUPT))
109
110 #if !defined(SA_NOCLDSTOP) || !defined(SA_INTERRUPT) && defined(SV_INTERRUPT)
111 #define SA_INTERRUPT    SV_INTERRUPT
112 #define sigaction       sigvec
113 #define sigemptyset(p)  (*(p)=0)
114 #define sa_flags        sv_flags
115 #ifdef sa_handler
116 # undef sa_handler
117 #endif
118 #define sa_handler      sv_handler
119 #define sa_mask         sv_mask
120 #endif
121
122 Handler_t
123 signal __PARAM__((int sig, Handler_t fun), (sig, fun)) __OTORP__(int sig; Handler_t fun;){
124         struct sigaction        na;
125         struct sigaction        oa;
126
127         memzero(&na, sizeof(na));
128         na.sa_handler = fun;
129 #if defined(SA_INTERRUPT) || defined(SA_RESTART)
130         switch (sig)
131         {
132 #if defined(SIGIO) || defined(SIGTSTP) || defined(SIGTTIN) || defined(SIGTTOU)
133 #if defined(SIGIO)
134         case SIGIO:
135 #endif
136 #if defined(SIGTSTP)
137         case SIGTSTP:
138 #endif
139 #if defined(SIGTTIN)
140         case SIGTTIN:
141 #endif
142 #if defined(SIGTTOU)
143         case SIGTTOU:
144 #endif
145 #if defined(SA_RESTART)
146                 na.sa_flags = SA_RESTART;
147 #endif
148                 break;
149 #endif
150         default:
151 #if defined(SA_INTERRUPT)
152                 na.sa_flags = SA_INTERRUPT;
153 #endif
154                 break;
155         }
156 #endif
157         return(sigaction(sig, &na, &oa) ? (Handler_t)0 : oa.sa_handler);
158 }
159
160 #else
161
162 NoN(signal)
163
164 #endif