File ksh93-signals.dif of Package ksh

--- src/cmd/ksh93/data/signals.c
+++ src/cmd/ksh93/data/signals.c	2012-02-06 11:16:53.970131637 +0100
@@ -18,6 +18,9 @@
 *                                                                      *
 ***********************************************************************/
 #include	"defs.h"
+#include	<cmd.h>
+#include	<jobs.h>
+
 
 #if defined(SIGCLD) && !defined(SIGCHLD)
 #   define SIGCHLD	SIGCLD
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c	2007-12-21 13:28:04.000000000 +0100
@@ -2894,6 +2894,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons
 				{
 					signal(SIGTTIN,SIG_DFL);
 					signal(SIGTTOU,SIG_DFL);
+					signal(SIGTSTP,SIG_DFL);
 				}
 #endif /* SIGTSTP */
 #ifdef JOBS
@@ -2931,6 +2932,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons
 			{
 				signal(SIGTTIN,SIG_IGN);
 				signal(SIGTTOU,SIG_IGN);
+				if(sh_isstate(SH_INTERACTIVE))
+					signal(SIGTSTP,SIG_IGN);
+				else	signal(SIGTSTP,SIG_DFL);
 			}
 #endif /* SIGTSTP */
 			if(spawnpid>0)
@@ -3011,6 +3015,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons
 		{
 			signal(SIGTTIN,SIG_DFL);
 			signal(SIGTTOU,SIG_DFL);
+			signal(SIGTSTP,SIG_DFL);
 			jobwasset++;
 		}
 #endif /* SIGTSTP */
@@ -3069,6 +3074,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons
 	{
 		signal(SIGTTIN,SIG_IGN);
 		signal(SIGTTOU,SIG_IGN);
+		if(sh_isstate(SH_INTERACTIVE))
+			signal(SIGTSTP,SIG_IGN);
+		else	signal(SIGTSTP,SIG_DFL);
 	}
 #endif /* SIGTSTP */
 	if(sigwasset)
openSUSE Build Service is sponsored by