X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/ea0716c6d898286350ebbe0036aef981418fe168..f89c329410c18fe1f09d843747fad77babb9f89c:/unix/pty.c diff --git a/unix/pty.c b/unix/pty.c index b621d8be..d99d4e50 100644 --- a/unix/pty.c +++ b/unix/pty.c @@ -474,6 +474,8 @@ int pty_select_result(int fd, int event) #endif from_backend(pty_frontend, 0, message, strlen(message)); } + + notify_remote_exit(pty_frontend); } return !finished; } @@ -619,10 +621,13 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg, /* * SIGINT and SIGQUIT may have been set to ignored by our * parent, particularly by things like sh -c 'pterm &' and - * some window managers. Reverse this for our child process. + * some window managers. SIGCHLD, meanwhile, was blocked + * during pt_main() startup. Reverse all this for our child + * process. */ putty_signal(SIGINT, SIG_DFL); putty_signal(SIGQUIT, SIG_DFL); + block_signal(SIGCHLD, 0); if (pty_argv) execvp(pty_argv[0], pty_argv); else { @@ -799,6 +804,11 @@ static int pty_exitcode(void *handle) return pty_exit_code; } +static int pty_cfg_info(void *handle) +{ + return 0; +} + Backend pty_backend = { pty_init, pty_free, @@ -815,5 +825,6 @@ Backend pty_backend = { pty_provide_ldisc, pty_provide_logctx, pty_unthrottle, + pty_cfg_info, 1 };