File ksh93-jobs.dif of Package ksh

--- src/cmd/ksh93/sh/jobs.c
+++ src/cmd/ksh93/sh/jobs.c	2012-12-20 13:33:28.000000000 +0000
@@ -638,12 +638,14 @@ void job_init(Shell_t *shp, int lflag)
 		/* This should have already been done by rlogin */
                 register int fd;
                 register char *ttynam;
+		int err = errno;
 #ifndef SIGTSTP
                 setpgid(0,shp->gd->pid);
 #endif /*SIGTSTP */
                 if(job.mypgid<0 || !(ttynam=ttyname(JOBTTY)))
                         return;
-                close(JOBTTY);
+		while(close(JOBTTY)<0 && errno==EINTR)
+			errno = err;
                 if((fd = open(ttynam,O_RDWR)) <0)
                         return;
                 if(fd!=JOBTTY)
@@ -1110,7 +1112,7 @@ static struct process *job_bystring(regi
 
 int job_kill(register struct process *pw,register int sig)
 {
-	Shell_t	*shp = pw->p_shp;
+	Shell_t	*shp;
 	register pid_t pid;
 	register int r;
 	const char *msg;
@@ -1123,6 +1125,7 @@ int job_kill(register struct process *pw
 	errno = ECHILD;
 	if(pw==0)
 		goto error;
+	shp = pw->p_shp;
 	pid = pw->p_pid;
 #if SHOPT_COSHELL
 	if(pw->p_cojob)
openSUSE Build Service is sponsored by