|
Revision 3104, 0.7 kB
(checked in by himi, 6 years ago)
|
set svn:eol-style
|
- Property svn:eol-style set to
native
|
| Line | |
|---|
| 1 |
|
|---|
| 2 |
#include <signal.h> |
|---|
| 3 |
#include <errno.h> |
|---|
| 4 |
|
|---|
| 5 |
int |
|---|
| 6 |
sigaction(int _sig, const struct sigaction *_act, struct sigaction *_oact) |
|---|
| 7 |
{ |
|---|
| 8 |
int retval = 0; |
|---|
| 9 |
|
|---|
| 10 |
if (_oact) |
|---|
| 11 |
{ |
|---|
| 12 |
void (*installed_sig)(int) = signal (_sig, SIG_IGN); |
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
if (installed_sig == SIG_ERR) |
|---|
| 16 |
{ |
|---|
| 17 |
retval = -1; |
|---|
| 18 |
errno = EINVAL; |
|---|
| 19 |
} |
|---|
| 20 |
else |
|---|
| 21 |
signal (_sig, installed_sig); |
|---|
| 22 |
_oact->sa_handler = installed_sig; |
|---|
| 23 |
retval = sigemptyset (&_oact->sa_mask); |
|---|
| 24 |
_oact->sa_flags = 0; |
|---|
| 25 |
} |
|---|
| 26 |
if (_act) |
|---|
| 27 |
{ |
|---|
| 28 |
if (signal (_sig, _act->sa_handler) == SIG_ERR) |
|---|
| 29 |
{ |
|---|
| 30 |
retval = -1; |
|---|
| 31 |
errno = EINVAL; |
|---|
| 32 |
} |
|---|
| 33 |
} |
|---|
| 34 |
return 0; |
|---|
| 35 |
} |
|---|
| 36 |
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|