1fdd4e1e0SJan Lentfer /****************************************************************************
2*32bb5217SDaniel Fojt  * Copyright 2020 Thomas E. Dickey                                          *
3*32bb5217SDaniel Fojt  * Copyright 1998-2002,2003 Free Software Foundation, Inc.                  *
4fdd4e1e0SJan Lentfer  *                                                                          *
5fdd4e1e0SJan Lentfer  * Permission is hereby granted, free of charge, to any person obtaining a  *
6fdd4e1e0SJan Lentfer  * copy of this software and associated documentation files (the            *
7fdd4e1e0SJan Lentfer  * "Software"), to deal in the Software without restriction, including      *
8fdd4e1e0SJan Lentfer  * without limitation the rights to use, copy, modify, merge, publish,      *
9fdd4e1e0SJan Lentfer  * distribute, distribute with modifications, sublicense, and/or sell       *
10fdd4e1e0SJan Lentfer  * copies of the Software, and to permit persons to whom the Software is    *
11fdd4e1e0SJan Lentfer  * furnished to do so, subject to the following conditions:                 *
12fdd4e1e0SJan Lentfer  *                                                                          *
13fdd4e1e0SJan Lentfer  * The above copyright notice and this permission notice shall be included  *
14fdd4e1e0SJan Lentfer  * in all copies or substantial portions of the Software.                   *
15fdd4e1e0SJan Lentfer  *                                                                          *
16fdd4e1e0SJan Lentfer  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17fdd4e1e0SJan Lentfer  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18fdd4e1e0SJan Lentfer  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19fdd4e1e0SJan Lentfer  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20fdd4e1e0SJan Lentfer  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21fdd4e1e0SJan Lentfer  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22fdd4e1e0SJan Lentfer  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23fdd4e1e0SJan Lentfer  *                                                                          *
24fdd4e1e0SJan Lentfer  * Except as contained in this notice, the name(s) of the above copyright   *
25fdd4e1e0SJan Lentfer  * holders shall not be used in advertising or otherwise to promote the     *
26fdd4e1e0SJan Lentfer  * sale, use or other dealings in this Software without prior written       *
27fdd4e1e0SJan Lentfer  * authorization.                                                           *
28fdd4e1e0SJan Lentfer  ****************************************************************************/
29fdd4e1e0SJan Lentfer 
30fdd4e1e0SJan Lentfer /****************************************************************************
31fdd4e1e0SJan Lentfer  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
32fdd4e1e0SJan Lentfer  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
33fdd4e1e0SJan Lentfer  *     and: Thomas E. Dickey                        1996-2003               *
34fdd4e1e0SJan Lentfer  ****************************************************************************/
35fdd4e1e0SJan Lentfer 
36fdd4e1e0SJan Lentfer /* This file provides sigaction() emulation using sigvec() */
37fdd4e1e0SJan Lentfer /* Use only if this is non POSIX system */
38fdd4e1e0SJan Lentfer 
39*32bb5217SDaniel Fojt MODULE_ID("$Id: sigaction.c,v 1.15 2020/02/02 23:34:34 tom Exp $")
40fdd4e1e0SJan Lentfer 
41fdd4e1e0SJan Lentfer static int
_nc_sigaction(int sig,sigaction_t * sigact,sigaction_t * osigact)42fdd4e1e0SJan Lentfer _nc_sigaction(int sig, sigaction_t * sigact, sigaction_t * osigact)
43fdd4e1e0SJan Lentfer {
44fdd4e1e0SJan Lentfer     return sigvec(sig, sigact, osigact);
45fdd4e1e0SJan Lentfer }
46fdd4e1e0SJan Lentfer 
47fdd4e1e0SJan Lentfer static int
_nc_sigemptyset(sigset_t * mask)48fdd4e1e0SJan Lentfer _nc_sigemptyset(sigset_t * mask)
49fdd4e1e0SJan Lentfer {
50fdd4e1e0SJan Lentfer     *mask = 0;
51fdd4e1e0SJan Lentfer     return 0;
52fdd4e1e0SJan Lentfer }
53fdd4e1e0SJan Lentfer 
54fdd4e1e0SJan Lentfer static int
_nc_sigprocmask(int mode,sigset_t * mask,sigset_t * omask)55fdd4e1e0SJan Lentfer _nc_sigprocmask(int mode, sigset_t * mask, sigset_t * omask)
56fdd4e1e0SJan Lentfer {
57fdd4e1e0SJan Lentfer     sigset_t current = sigsetmask(0);
58fdd4e1e0SJan Lentfer 
59fdd4e1e0SJan Lentfer     if (omask)
60fdd4e1e0SJan Lentfer 	*omask = current;
61fdd4e1e0SJan Lentfer 
62fdd4e1e0SJan Lentfer     if (mode == SIG_BLOCK)
63fdd4e1e0SJan Lentfer 	current |= *mask;
64fdd4e1e0SJan Lentfer     else if (mode == SIG_UNBLOCK)
65fdd4e1e0SJan Lentfer 	current &= ~*mask;
66fdd4e1e0SJan Lentfer     else if (mode == SIG_SETMASK)
67fdd4e1e0SJan Lentfer 	current = *mask;
68fdd4e1e0SJan Lentfer 
69fdd4e1e0SJan Lentfer     sigsetmask(current);
70fdd4e1e0SJan Lentfer     return 0;
71fdd4e1e0SJan Lentfer }
72fdd4e1e0SJan Lentfer 
73fdd4e1e0SJan Lentfer static int
_nc_sigaddset(sigset_t * mask,int sig)74fdd4e1e0SJan Lentfer _nc_sigaddset(sigset_t * mask, int sig)
75fdd4e1e0SJan Lentfer {
76fdd4e1e0SJan Lentfer     *mask |= sigmask(sig);
77fdd4e1e0SJan Lentfer     return 0;
78fdd4e1e0SJan Lentfer }
79fdd4e1e0SJan Lentfer 
80fdd4e1e0SJan Lentfer /* not used in lib_tstp.c */
81fdd4e1e0SJan Lentfer #if 0
82fdd4e1e0SJan Lentfer static int
83fdd4e1e0SJan Lentfer _nc_sigsuspend(sigset_t * mask)
84fdd4e1e0SJan Lentfer {
85fdd4e1e0SJan Lentfer     return sigpause(*mask);
86fdd4e1e0SJan Lentfer }
87fdd4e1e0SJan Lentfer 
88fdd4e1e0SJan Lentfer static int
89fdd4e1e0SJan Lentfer _nc_sigdelset(sigset_t * mask, int sig)
90fdd4e1e0SJan Lentfer {
91fdd4e1e0SJan Lentfer     *mask &= ~sigmask(sig);
92fdd4e1e0SJan Lentfer     return 0;
93fdd4e1e0SJan Lentfer }
94fdd4e1e0SJan Lentfer 
95fdd4e1e0SJan Lentfer static int
96fdd4e1e0SJan Lentfer _nc_sigismember(sigset_t * mask, int sig)
97fdd4e1e0SJan Lentfer {
98fdd4e1e0SJan Lentfer     return (*mask & sigmask(sig)) != 0;
99fdd4e1e0SJan Lentfer }
100fdd4e1e0SJan Lentfer #endif
101