static int pty_stamped_utmp = 0;
static int pty_child_pid;
static int pty_utmp_helper_pid, pty_utmp_helper_pipe;
+static int pty_term_width, pty_term_height;
static sig_atomic_t pty_child_dead;
#ifndef OMIT_UTMP
static struct utmp utmp_entry;
return pty_child_dead;
}
-static void pty_size(void);
-
static void setup_utmp(char *ttyname, char *location)
{
#ifndef OMIT_UTMP
close(pipefd[0]);
pty_utmp_helper_pid = pid;
pty_utmp_helper_pipe = pipefd[1];
+ signal(SIGCHLD, sigchld_handler);
}
#endif
* Also places the canonical host name into `realhost'. It must be
* freed by the caller.
*/
-static char *pty_init(char *host, int port, char **realhost, int nodelay)
+static char *pty_init(void *frontend,
+ char *host, int port, char **realhost, int nodelay)
{
int slavefd;
pid_t pid, pgrp;
+ pty_term_width = cfg.width;
+ pty_term_height = cfg.height;
+
if (pty_master_fd < 0)
pty_open_master();
/*
* Called to set the size of the window
*/
-static void pty_size(void)
+static void pty_size(int width, int height)
{
struct winsize size;
- size.ws_row = (unsigned short)rows;
- size.ws_col = (unsigned short)cols;
- size.ws_xpixel = (unsigned short) cols * font_dimension(0);
- size.ws_ypixel = (unsigned short) rows * font_dimension(1);
+ pty_term_width = width;
+ pty_term_height = height;
+
+ size.ws_row = (unsigned short)pty_term_height;
+ size.ws_col = (unsigned short)pty_term_width;
+ size.ws_xpixel = (unsigned short) pty_term_width * font_dimension(0);
+ size.ws_ypixel = (unsigned short) pty_term_height * font_dimension(1);
ioctl(pty_master_fd, TIOCSWINSZ, (void *)&size);
return;
}