fix for SIGINT in sourced script
authorChet Ramey <chet.ramey@case.edu>
Fri, 1 Jun 2018 14:22:36 +0000 (10:22 -0400)
committerChet Ramey <chet.ramey@case.edu>
Fri, 1 Jun 2018 14:22:36 +0000 (10:22 -0400)
builtins/trap.def
patchlevel.h

index 57d9b52..d43b0ef 100644 (file)
@@ -98,6 +98,7 @@ static int display_traps __P((WORD_LIST *));
 #define IGNORE 2               /* Ignore this signal. */
 
 extern int posixly_correct, subshell_environment;
+extern int sourcelevel, running_trap;
 
 int
 trap_builtin (list)
@@ -212,6 +213,9 @@ trap_builtin (list)
                           was SIG_IGN? */
                        if (interactive)
                          set_signal_handler (SIGINT, sigint_sighandler);
+                       /* special cases for interactive == 0 */
+                       else if (interactive_shell && (sourcelevel||running_trap))
+                         set_signal_handler (SIGINT, sigint_sighandler);
                        else
                          set_signal_handler (SIGINT, termsig_sighandler);
                        break;
index 9be226c..2060b58 100644 (file)
@@ -25,6 +25,6 @@
    regexp `^#define[   ]*PATCHLEVEL', since that's what support/mkversion.sh
    looks for to find the patch level (for the sccs version string). */
 
-#define PATCHLEVEL 22
+#define PATCHLEVEL 23
 
 #endif /* _PATCHLEVEL_H_ */