X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-sys%2Fmutt_signal.c;h=2728656df09d97812ad5576ac152813d4ff10b62;hp=8609671b937c3d1c36864f2dc7ce21de399e8298;hb=bb8c11821cc88fef9da474587cc42e0f7554cf28;hpb=84bc6d1930165b21919541b3b24294a9d99c3541 diff --git a/lib-sys/mutt_signal.c b/lib-sys/mutt_signal.c index 8609671..2728656 100644 --- a/lib-sys/mutt_signal.c +++ b/lib-sys/mutt_signal.c @@ -9,7 +9,7 @@ #include -#include +#include #include "mutt_signal.h" @@ -22,15 +22,10 @@ static int IsEndwin = 0; /* Attempt to catch "ordinary" signals and shut down gracefully. */ static void exit_handler (int sig) { - curs_set (1); - endwin (); /* just to be safe */ - printf(_("Caught %s... Exiting.\n"), strsignal(sig)); - exit (0); -} - -static void chld_handler(int sig __attribute__((unused))) -{ - /* empty */ + curs_set(1); + endwin(); /* just to be safe */ + printf(_("Caught %s... Exiting.\n"), strsignal(sig)); + exit(0); } static void sighandler (int sig) @@ -39,8 +34,6 @@ static void sighandler (int sig) switch (sig) { case SIGTSTP: /* user requested a suspend */ - if (!option (OPTSUSPEND)) - break; IsEndwin = isendwin (); curs_set (1); if (!IsEndwin) @@ -49,25 +42,21 @@ static void sighandler (int sig) case SIGCONT: if (!IsEndwin) - refresh (); + refresh(); mutt_curs_set (-1); -#if defined (HAVE_RESIZETERM) /* We don't receive SIGWINCH when suspended; however, no harm is done by * just assuming we received one, and triggering the 'resize' anyway. */ + case SIGWINCH: SigWinch = 1; -#endif break; -#if defined (HAVE_RESIZETERM) - case SIGWINCH: - SigWinch = 1; + case SIGCHLD: + SigChild = 1; break; -#endif case SIGINT: SigInt = 1; break; - } errno = save_errno; } @@ -105,14 +94,11 @@ void mutt_signal_initialize (void) sigaction (SIGCONT, &act, NULL); sigaction (SIGTSTP, &act, NULL); sigaction (SIGINT, &act, NULL); -#if defined (HAVE_RESIZETERM) sigaction (SIGWINCH, &act, NULL); -#endif /* POSIX doesn't allow us to ignore SIGCHLD, * so we just install a dummy handler for it */ - act.sa_handler = chld_handler; /* don't need to block any other signals here */ sigemptyset (&act.sa_mask); /* we don't want to mess with stopped children */ @@ -129,9 +115,7 @@ void mutt_block_signals (void) sigaddset (&Sigset, SIGHUP); sigaddset (&Sigset, SIGTSTP); sigaddset (&Sigset, SIGINT); -#if defined (HAVE_RESIZETERM) sigaddset (&Sigset, SIGWINCH); -#endif sigprocmask (SIG_BLOCK, &Sigset, 0); set_option (OPTSIGNALSBLOCKED); }