X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fpty.c;h=19ec8d71e3c0414d1a0c0c28e8290ea97265e0da;hb=44239efc6bd47006b53c1a853a60f02501d61c6e;hp=b9bd510b1f83326caecba322f005f66240d87fc2;hpb=ebf507497dc5eb97e825084f7fbf756f2283d496;p=PuTTY.git diff --git a/unix/pty.c b/unix/pty.c index b9bd510b..19ec8d71 100644 --- a/unix/pty.c +++ b/unix/pty.c @@ -11,7 +11,7 @@ * a null pointer and ignored everywhere. */ -#define _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 #define _XOPEN_SOURCE_EXTENDED #define _GNU_SOURCE @@ -621,18 +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. SIGCHLD, meanwhile, has been - * tinkered with by the watchdog process. Reverse all 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); - { - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGCHLD); - sigprocmask(SIG_UNBLOCK, &set, NULL); - } + block_signal(SIGCHLD, 0); if (pty_argv) execvp(pty_argv[0], pty_argv); else { @@ -809,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, @@ -825,5 +825,6 @@ Backend pty_backend = { pty_provide_ldisc, pty_provide_logctx, pty_unthrottle, + pty_cfg_info, 1 };