blob: 939011eaf466894824327ba411a046d6a8673dac [file] [log] [blame]
/*
* signal.c
*/
#include <signal.h>
#if __x86_64__
/* Quick hack: Add sigaction to this file. Not a good solution, it should
be in signal.h.
*/
struct sigaction {
__sighandler_t sa_handler;
unsigned long sa_flags;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
#endif
__sighandler_t signal(int signum, __sighandler_t handler)
{
struct sigaction sa;
sa.sa_handler = handler;
sa.sa_flags = SA_RESETHAND; /* SysV/Linux signal() semantic */
sigemptyset(&sa.sa_mask);
if ( sigaction(signum, &sa, &sa) ) {
return (__sighandler_t)SIG_ERR;
} else {
return (__sighandler_t)sa.sa_handler;
}
}