mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 08:18:51 -05:00
Use sigaction instead of signal.
From signal man page : "The behavior of signal() varies across Unix versions, and has also varied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. See Portability below." The code was taken from there : http://www.gnu.org/software/libtool/manual/libc/Sigaction-Function-Example.html Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
2f9f48eddd
commit
51e0303e84
@ -752,6 +752,7 @@ static int parseconfig(const char *file)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int ret = 0;
|
||||
struct sigaction new_action, old_action;
|
||||
#if defined(HAVE_GETEUID)
|
||||
/* geteuid undefined in CYGWIN */
|
||||
uid_t myuid = geteuid();
|
||||
@ -762,10 +763,24 @@ int main(int argc, char *argv[])
|
||||
mtrace();
|
||||
#endif
|
||||
|
||||
/* set signal handlers */
|
||||
signal(SIGINT, handler);
|
||||
signal(SIGTERM, handler);
|
||||
signal(SIGSEGV, handler);
|
||||
/* Set signal handlers */
|
||||
/* Set up the structure to specify the new action. */
|
||||
new_action.sa_handler = handler;
|
||||
sigemptyset(&new_action.sa_mask);
|
||||
new_action.sa_flags = 0;
|
||||
|
||||
sigaction(SIGINT, NULL, &old_action);
|
||||
if(old_action.sa_handler != SIG_IGN) {
|
||||
sigaction(SIGINT, &new_action, NULL);
|
||||
}
|
||||
sigaction(SIGTERM, NULL, &old_action);
|
||||
if(old_action.sa_handler != SIG_IGN) {
|
||||
sigaction(SIGTERM, &new_action, NULL);
|
||||
}
|
||||
sigaction(SIGSEGV, NULL, &old_action);
|
||||
if(old_action.sa_handler != SIG_IGN) {
|
||||
sigaction(SIGSEGV, &new_action, NULL);
|
||||
}
|
||||
|
||||
/* i18n init */
|
||||
#if defined(ENABLE_NLS)
|
||||
|
Loading…
Reference in New Issue
Block a user