int master_fd, slave_fd;
void *frontend;
char name[FILENAME_MAX];
- int child_pid;
+ pid_t child_pid;
int term_width, term_height;
int child_dead, finished;
int exit_code;
static int pty_find_by_pid(void *av, void *bv)
{
- int a = *(int *)av;
+ pid_t a = *(pid_t *)av;
Pty b = (Pty)bv;
if (a < b->child_pid)
static Pty single_pty = NULL;
#ifndef OMIT_UTMP
-static int pty_utmp_helper_pid, pty_utmp_helper_pipe;
+static pid_t pty_utmp_helper_pid;
+static int pty_utmp_helper_pipe;
static int pty_stamped_utmp;
static struct utmpx utmp_entry;
#endif
if (fd == pty_signal_pipe[0]) {
pid_t pid;
- int ipid;
int status;
char c[1];
do {
pid = waitpid(-1, &status, WNOHANG);
- ipid = pid;
pty = find234(ptys_by_pid, &pid, pty_find_by_pid);
if (pty)
}
/*
- * 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, was blocked
- * during pt_main() startup. Reverse all this for our child
- * process.
+ * SIGINT, SIGQUIT and SIGPIPE may have been set to ignored by
+ * our parent, particularly by things like sh -c 'pterm &' and
+ * some window or session 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);
+ putty_signal(SIGPIPE, SIG_DFL);
block_signal(SIGCHLD, 0);
if (pty_argv)
execvp(pty_argv[0], pty_argv);