From 0bb70dcda560e7f7f60d2502ccce3328f97d6ddd Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Mon, 17 Dec 2001 04:34:23 +0000 Subject: [PATCH] VDSUSP fix from 1.0 tree git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@931 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 7 +++++++ nano.c | 26 +++++++++++++++++++++----- proto.h | 1 + 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e149189..1b828368 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ CVS code - +- nano.c: + do_cont() + - Run signal_init() after doupdate() so ^Y wont suddenly + start suspending after returning from ^Z suspend in Hurd. + signal_init() + - Unconditionally disable VDSUSP if it exists, stops ^Y + suspending nano on the Hurd. nano-1.1.4 - 12/11/2001 - General diff --git a/nano.c b/nano.c index 3c403dba..74adc877 100644 --- a/nano.c +++ b/nano.c @@ -1937,6 +1937,9 @@ RETSIGTYPE do_cont(int signal) SIGTSTP handler */ doupdate(); + /* The Hurd seems to need this, otherwise a ^Y after a ^Z will + start suspending again */ + signal_init(); } void handle_sigwinch(int s) @@ -2033,18 +2036,25 @@ void signal_init(void) act.sa_handler = handle_sigwinch; sigaction(SIGWINCH, &act, NULL); + +#ifdef _POSIX_VDISABLE + tcgetattr(0, &term); + +#ifdef VDSUSP + term.c_cc[VDSUSP] = _POSIX_VDISABLE; +#endif /* VDSUSP */ + +#endif /* _POSIX_VDISABLE */ + if (!ISSET(SUSPEND)) { /* Insane! */ #ifdef _POSIX_VDISABLE - tcgetattr(0, &term); term.c_cc[VSUSP] = _POSIX_VDISABLE; - tcsetattr(0, TCSANOW, &term); -#endif - - /* The HURD seems to need this anyway! */ +#else act.sa_handler = SIG_IGN; sigaction(SIGTSTP, &act, NULL); +#endif } else { /* if we don't do this, it seems other stuff interrupts the @@ -2058,6 +2068,12 @@ void signal_init(void) sigaction(SIGCONT, &act, NULL); } + +#ifdef _POSIX_VDISABLE + tcsetattr(0, TCSANOW, &term); +#endif + + } void window_init(void) diff --git a/proto.h b/proto.h index e7fcf539..bd4d2a20 100644 --- a/proto.h +++ b/proto.h @@ -133,6 +133,7 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace, int *list) char *real_dir_from_tilde(char *buf); void shortcut_init(int unjustify); +void signal_init(void); void lowercase(char *src); void blank_bottombars(void); void check_wrap(filestruct * inptr, char ch); -- 2.39.5