X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/2df34b4321465f778e00edfdd2b44ae8f3d2dc8f..f278d6f8b2cf652516548664d5c0d5103683c4f6:/ssh.c diff --git a/ssh.c b/ssh.c index 31d4cc49..127ebeec 100644 --- a/ssh.c +++ b/ssh.c @@ -5,7 +5,6 @@ #include #include "putty.h" -#include "terminal.h" #include "tree234.h" #include "ssh.h" @@ -536,6 +535,8 @@ static int ssh_echoing, ssh_editing; static void *frontend; +static int ssh_term_width, ssh_term_height; + static tree234 *ssh_channels; /* indexed by local id */ static struct ssh_channel *mainchan; /* primary session channel */ static int ssh_exitcode = -1; @@ -3127,8 +3128,8 @@ static void ssh1_protocol(unsigned char *in, int inlen, int ispkt) if (!cfg.nopty) { send_packet(SSH1_CMSG_REQUEST_PTY, PKT_STR, cfg.termtype, - PKT_INT, term ? term->rows : 24, - PKT_INT, term ? term->cols : 80, + PKT_INT, ssh_term_height, + PKT_INT, ssh_term_width, PKT_INT, 0, PKT_INT, 0, PKT_CHAR, 0, PKT_END); ssh_state = SSH_STATE_INTERMED; do { @@ -5146,8 +5147,8 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) ssh2_pkt_addstring("pty-req"); ssh2_pkt_addbool(1); /* want reply */ ssh2_pkt_addstring(cfg.termtype); - ssh2_pkt_adduint32(term ? term->cols : 80); - ssh2_pkt_adduint32(term ? term->rows : 24); + ssh2_pkt_adduint32(ssh_term_width); + ssh2_pkt_adduint32(ssh_term_height); ssh2_pkt_adduint32(0); /* pixel width */ ssh2_pkt_adduint32(0); /* pixel height */ ssh2_pkt_addstring_start(); @@ -5721,6 +5722,8 @@ static char *ssh_init(void *frontend_handle, #endif frontend = frontend_handle; + ssh_term_width = cfg.width; + ssh_term_height = cfg.height; ssh_send_ok = 0; ssh_editing = 0; @@ -5782,8 +5785,11 @@ static int ssh_sendbuffer(void) /* * Called to set the size of the window from SSH's POV. */ -static void ssh_size(void) +static void ssh_size(int width, int height) { + ssh_term_width = width; + ssh_term_height = height; + switch (ssh_state) { case SSH_STATE_BEFORE_SIZE: case SSH_STATE_PREPACKET: @@ -5798,15 +5804,15 @@ static void ssh_size(void) return; if (ssh_version == 1) { send_packet(SSH1_CMSG_WINDOW_SIZE, - PKT_INT, term->rows, PKT_INT, term->cols, + PKT_INT, ssh_term_height, PKT_INT, ssh_term_width, PKT_INT, 0, PKT_INT, 0, PKT_END); } else { ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST); ssh2_pkt_adduint32(mainchan->remoteid); ssh2_pkt_addstring("window-change"); ssh2_pkt_addbool(0); - ssh2_pkt_adduint32(term->cols); - ssh2_pkt_adduint32(term->rows); + ssh2_pkt_adduint32(ssh_term_width); + ssh2_pkt_adduint32(ssh_term_height); ssh2_pkt_adduint32(0); ssh2_pkt_adduint32(0); ssh2_pkt_send();