@@ -5338,6 +5338,17 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
53385338 if (use_null_for_in || use_null_for_out || use_null_for_err )
53395339 null_fd = open ("/dev/null" , O_RDWR | O_EXTRA , 0 );
53405340
5341+ if (pty_slave_fd >= 0 )
5342+ {
5343+ /* push stream discipline modules */
5344+ SetupSlavePTY (pty_slave_fd );
5345+ # ifdef TIOCSCTTY
5346+ /* Try to become controlling tty (probably doesn't work,
5347+ * unless run by root) */
5348+ ioctl (pty_slave_fd , TIOCSCTTY , (char * )NULL );
5349+ # endif
5350+ }
5351+
53415352 /* set up stdin for the child */
53425353 close (0 );
53435354 if (use_null_for_in && null_fd >= 0 )
@@ -5384,24 +5395,13 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
53845395 close (fd_err [1 ]);
53855396 if (pty_master_fd >= 0 )
53865397 {
5387- close (pty_master_fd ); /* not used */
5388- close (pty_slave_fd ); /* duped above */
5398+ close (pty_master_fd ); /* not used in the child */
5399+ close (pty_slave_fd ); /* was duped above */
53895400 }
53905401
53915402 if (null_fd >= 0 )
53925403 close (null_fd );
53935404
5394- if (pty_slave_fd >= 0 )
5395- {
5396- /* push stream discipline modules */
5397- SetupSlavePTY (pty_slave_fd );
5398- # ifdef TIOCSCTTY
5399- /* Try to become controlling tty (probably doesn't work,
5400- * unless run by root) */
5401- ioctl (pty_slave_fd , TIOCSCTTY , (char * )NULL );
5402- # endif
5403- }
5404-
54055405 /* See above for type of argv. */
54065406 execvp (argv [0 ], argv );
54075407
0 commit comments