From 99bede34e746269d4b257718d4ac1bcf987c1827 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Mon, 29 Sep 2003 07:21:11 +0000 Subject: [PATCH] have nano handle SIGHUP/SIGTERM properly when it's suspended git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1562 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 4 ++++ src/nano.c | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9f3ac321..4a527a2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -92,6 +92,10 @@ CVS code - - Toggle MARK_ISSET() at the beginning of the function instead of setting it in one place and unsetting it in another place. (David Benbennick) + do_suspend() + - Use handle_hupterm() to handle SIGHUP and SIGTERM so we can + properly deal with them while nano is suspended. (DLR; problem + found by David Benbennick) abcd() - Removed, as it's unneeded due to the low-level input overhaul. (DLR) diff --git a/src/nano.c b/src/nano.c index fc05e424..e3b8cbd3 100644 --- a/src/nano.c +++ b/src/nano.c @@ -2852,6 +2852,12 @@ RETSIGTYPE do_suspend(int signal) /* Restore the terminal settings for the disabled keys */ tcsetattr(0, TCSANOW, &oldterm); + /* Trap SIGHUP and SIGTERM so we can properly deal with them while + suspended */ + act.sa_handler = handle_hupterm; + sigaction(SIGHUP, &act, NULL); + sigaction(SIGTERM, &act, NULL); + /* We used to re-enable the default SIG_DFL and raise SIGTSTP, but then we could be (and were) interrupted in the middle of the call. So we do it the mutt way instead */ @@ -2863,8 +2869,8 @@ RETSIGTYPE do_cont(int signal) { /* Now we just update the screen instead of having to reenable the SIGTSTP handler. */ - doupdate(); + /* The Hurd seems to need this, otherwise a ^Y after a ^Z will start suspending again. */ signal_init(); -- 2.39.5