36 lines
1.1 KiB
Plaintext
36 lines
1.1 KiB
Plaintext
--- 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)
|