From d14d9069cd203b7a59c6184e8de802df8ec2c417 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 28 Nov 2021 11:07:06 +0100 Subject: [PATCH] tweaks: exclude some suspension code from the tiny version The SIGCONT handler needs to stay, so that also in the tiny version a 'fg' can properly resume from an external SIGTSTP. --- src/global.c | 11 ++++++----- src/nano.c | 10 ++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/global.c b/src/global.c index e8fa66bf..6d7e689b 100644 --- a/src/global.c +++ b/src/global.c @@ -622,9 +622,9 @@ void shortcut_init(void) #ifndef NANO_TINY const char *wordcount_gist = N_("Count the number of words, lines, and characters"); + const char *suspend_gist = N_("Suspend the editor (return to the shell)"); #endif const char *refresh_gist = N_("Refresh (redraw) the current screen"); - const char *suspend_gist = N_("Suspend the editor (return to the shell)"); #ifdef ENABLE_WORDCOMPLETION const char *completion_gist = N_("Try and complete the current word"); #endif @@ -983,14 +983,15 @@ void shortcut_init(void) add_to_funcs(do_verbatim_input, MMAIN, N_("Verbatim"), WITHORSANS(verbatim_gist), BLANKAFTER, NOVIEW); +#ifndef NANO_TINY + add_to_funcs(do_suspend, MMAIN, + N_("Suspend"), WITHORSANS(suspend_gist), TOGETHER, VIEW); +#endif #ifdef ENABLE_HELP add_to_funcs(full_refresh, MMAIN, - N_("Refresh"), WITHORSANS(refresh_gist), TOGETHER, VIEW); + N_("Refresh"), WITHORSANS(refresh_gist), BLANKAFTER, VIEW); #endif - add_to_funcs(do_suspend, MMAIN, - N_("Suspend"), WITHORSANS(suspend_gist), BLANKAFTER, VIEW); - #ifndef NANO_TINY add_to_funcs(do_indent, MMAIN, N_("Indent"), WITHORSANS(indent_gist), TOGETHER, NOVIEW); diff --git a/src/nano.c b/src/nano.c index 40eab9ac..cba6687d 100644 --- a/src/nano.c +++ b/src/nano.c @@ -897,16 +897,16 @@ void signal_init(void) /* Trap SIGWINCH because we want to handle window resizes. */ deed.sa_handler = handle_sigwinch; sigaction(SIGWINCH, &deed, NULL); -#endif - /* In the suspend and continue handlers, block all other signals. - * If we don't do this, other stuff interrupts them! */ - sigfillset(&deed.sa_mask); #ifdef SIGTSTP + /* Prevent the suspend handler from getting interrupted. */ + sigfillset(&deed.sa_mask); deed.sa_handler = suspend_nano; sigaction(SIGTSTP, &deed, NULL); #endif +#endif /* !NANO_TINY */ #ifdef SIGCONT + sigfillset(&deed.sa_mask); deed.sa_handler = continue_nano; sigaction(SIGCONT, &deed, NULL); #endif @@ -938,6 +938,7 @@ void handle_crash(int signal) } #endif +#ifndef NANO_TINY /* Handler for SIGTSTP (suspend). */ void suspend_nano(int signal) { @@ -971,6 +972,7 @@ void do_suspend(void) ran_a_tool = TRUE; } +#endif /* !NANO_TINY */ /* Handler for SIGCONT (continue after suspend). */ void continue_nano(int signal)