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