Cleanups from yesterday's destabilisation: lots of stuff in
[u/mdw/putty] / unix / pty.c
index 7fe0dc7..42ccec1 100644 (file)
@@ -59,6 +59,7 @@ static char pty_name[FILENAME_MAX];
 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;
@@ -70,8 +71,6 @@ int pty_child_is_dead(void)
     return pty_child_dead;
 }
 
-static void pty_size(void);
-
 static void setup_utmp(char *ttyname, char *location)
 {
 #ifndef OMIT_UTMP
@@ -372,11 +371,15 @@ void pty_pre_init(void)
  * 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();
 
@@ -517,14 +520,17 @@ static int pty_sendbuffer(void)
 /*
  * 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;
 }