dtterm: fixes so job control will work.

This commit is contained in:
Jon Trulson
2012-06-18 16:01:17 -06:00
parent 62b669a6af
commit 91f7988cf3
2 changed files with 48 additions and 5 deletions

View File

@@ -38,7 +38,7 @@ static char rcs_id[] = "$TOG: TermPrimSubproc.c /main/11 1998/04/20 12:45:57 mgr
#include "TermHeader.h"
#include <fcntl.h>
#ifdef ALPHA_ARCHITECTURE
#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) || defined(LINUX_ARCHITECTURE)
/* For TIOCSTTY definitions */
#include <sys/ioctl.h>
#endif /* ALPHA_ARCHITECTURE */
@@ -461,7 +461,7 @@ _DtTermPrimSubprocExec(Widget w,
/* child...
*/
_DtTermProcessUnlock();
#ifdef ALPHA_ARCHITECTURE
#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) || defined(LINUX_ARCHITECTURE)
/* establish a new session for child */
setsid();
#else
@@ -469,6 +469,11 @@ _DtTermPrimSubprocExec(Widget w,
(void) setpgrp();
#endif /* ALPHA_ARCHITECTURE */
#if defined(LINUX_ARCHITECTURE)
/* set the ownership and mode of the pty... */
(void) _DtTermPrimSetupPty(ptyName, pty);
#endif
/* open the pty slave as our controlling terminal... */
pty = open(ptyName, O_RDWR, 0);
@@ -477,7 +482,7 @@ _DtTermPrimSubprocExec(Widget w,
(void) _exit(1);
}
#ifdef ALPHA_ARCHITECTURE
#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) || defined(LINUX_ARCHITECTURE)
/* BSD needs to do this to acquire pty as controlling terminal */
if (ioctl(pty, TIOCSCTTY, (char *)NULL) < 0) {
(void) close(pty);
@@ -490,8 +495,10 @@ _DtTermPrimSubprocExec(Widget w,
_DtTermPrimPtyGetDefaultModes();
#endif /* ALPHA_ARCHITECTURE */
#if !defined(LINUX_ARCHITECTURE)
/* set the ownership and mode of the pty... */
(void) _DtTermPrimSetupPty(ptyName, pty);
#endif /* LINUX_ARCHITECTURE */
/* apply the ttyModes... */
_DtTermPrimPtyInit(pty, tw->term.ttyModes, tw->term.csWidth);