View | Details | Raw Unified | Return to bug 1240 | Differences between
and this patch

Collapse All | Expand All

(-)sigact.c.orig (-11 / +59 lines)
Lines 37-42 Link Here
37
37
38
#include "includes.h"
38
#include "includes.h"
39
#include <signal.h>
39
#include <signal.h>
40
#include <errno.h>
40
#include "sigact.h"
41
#include "sigact.h"
41
42
42
/* This file provides sigaction() emulation using sigvec() */
43
/* This file provides sigaction() emulation using sigvec() */
Lines 47-89 Link Here
47
int
48
int
48
sigaction(int sig, struct sigaction *sigact, struct sigaction *osigact)
49
sigaction(int sig, struct sigaction *sigact, struct sigaction *osigact)
49
{
50
{
50
	return sigvec(sig, &(sigact->sv), &(osigact->sv));
51
	return sigvec(sig, (struct sigvec *) (sigact ? &(sigact->sv) : 0),
52
			(struct sigvec *) (osigact ? &(osigact->sv) : 0));
51
}
53
}
52
54
53
int
55
int
54
sigemptyset (sigset_t * mask)
56
sigemptyset (sigset_t * mask)
55
{
57
{
56
	*mask = 0;
58
	if (mask) {
57
	return 0;
59
		*mask = 0;
60
		return 0;
61
	}
62
	else {
63
		errno = EINVAL;
64
		return -1;
65
	}
66
}
67
68
int
69
sigfillset (sigset_t * mask)
70
{
71
	if (mask) {
72
		*mask = ~0;
73
		return 0;
74
	}
75
	else {
76
		errno = EINVAL;
77
		return -1;
78
	}
58
}
79
}
59
80
60
int
81
int
61
sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
82
sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
62
{
83
{
63
	sigset_t current = sigsetmask(0);
84
	sigset_t current = sigblock(0);
64
85
65
	if (omask) *omask = current;
86
	if (omask) *omask = current;
66
87
67
	if (mode==SIG_BLOCK)
88
	if (mask) {
68
		current |= *mask;
89
		if (mode==SIG_BLOCK)
69
	else if (mode==SIG_UNBLOCK)
90
			current |= *mask;
70
		current &= ~*mask;
91
		else if (mode==SIG_UNBLOCK)
71
	else if (mode==SIG_SETMASK)
92
			current &= ~*mask;
72
	current = *mask;
93
		else if (mode==SIG_SETMASK)
94
			current = *mask;
95
		else {
96
			errno = EINVAL;
97
			return -1;
98
		}
99
		sigsetmask(current);
100
	}
73
101
74
	sigsetmask(current);
75
	return 0;
102
	return 0;
76
}
103
}
77
104
78
int
105
int
79
sigsuspend (sigset_t * mask)
106
sigsuspend (sigset_t * mask)
80
{
107
{
108
	if (!mask) {
109
		errno = EINVAL;
110
		return -1;
111
	}
112
113
	/* XXX - there's incompatible system call with the same name in SVR4 */
81
	return sigpause(*mask);
114
	return sigpause(*mask);
82
}
115
}
83
116
84
int
117
int
85
sigdelset (sigset_t * mask, int sig)
118
sigdelset (sigset_t * mask, int sig)
86
{
119
{
120
	if (!mask || sig < 1 || sig >= NSIG) {
121
		errno = EINVAL;
122
		return -1;
123
	}
124
87
	*mask &= ~sigmask(sig);
125
	*mask &= ~sigmask(sig);
88
	return 0;
126
	return 0;
89
}
127
}
Lines 91-96 Link Here
91
int
129
int
92
sigaddset (sigset_t * mask, int sig)
130
sigaddset (sigset_t * mask, int sig)
93
{
131
{
132
	if (!mask || sig < 1 || sig >= NSIG) {
133
		errno = EINVAL;
134
		return -1;
135
	}
136
94
	*mask |= sigmask(sig);
137
	*mask |= sigmask(sig);
95
	return 0;
138
	return 0;
96
}
139
}
Lines 98-103 Link Here
98
int
141
int
99
sigismember (sigset_t * mask, int sig)
142
sigismember (sigset_t * mask, int sig)
100
{
143
{
144
	if (!mask || sig < 1 || sig >= NSIG) {
145
		errno = EINVAL;
146
		return -1;
147
	}
148
101
	return (*mask & sigmask(sig)) != 0;
149
	return (*mask & sigmask(sig)) != 0;
102
}
150
}
103
151

Return to bug 1240