Welcome to mirror list, hosted at ThFree Co, Russian Federation.

sigset.c « unix « libc « newlib - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ecb3d08001fff849bd7c87628d9085b15ca5d891 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <signal.h>
#include <errno.h>

#ifdef SIG_SETMASK	/* easier than trying to remove from Makefile */

#undef sigemptyset
int
sigemptyset (sigset_t * set)
{
  *set = (sigset_t) 0;
  return 0;
}

int
sigfillset (sigset_t * set)
{
  *set = ~((sigset_t) 0);
  return 0;
}

#undef sigaddset
int
sigaddset (sigset_t * set, int signo)
{
  if (signo >= NSIG || signo <= 0)
    {
      errno = EINVAL;
      return -1;
    }
  *set |= 1 << (signo - 1);
  return 0;
}

int
sigdelset (sigset_t * set, int signo)
{
  if (signo >= NSIG || signo <= 0)
    {
      errno = EINVAL;
      return -1;
    }
  *set &= ~(1 << (signo - 1));
  return 0;
}

int
sigismember (const sigset_t * set, int signo)
{
  if (signo >= NSIG || signo <= 0)
    {
      errno = EINVAL;
      return -1;
    }

  if (*set & (1 << (signo - 1)))
    return 1;
  else
    return 0;
}

#endif /* SIG_SETMASK */