xterm.c
author viric@mandarina
Mon, 28 Apr 2008 21:37:25 +0200
changeset 90 f172b95795d8
parent 53 07500c5c53cb
permissions -rw-r--r--
Moving to version 0.4.1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     1
/*
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     2
    Terminal Mixer - multi-point multi-user access to terminal applications
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     3
    Copyright (C) 2007  LluĂ­s Batlle i Rossell
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     4
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     5
    Please find the license in the provided COPYING file.
07500c5c53cb Adding license and web html.
viric@llimona
parents: 47
diff changeset
     6
*/
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
     7
#include <sys/ioctl.h>
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
     8
#include <termios.h>
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
     9
#include <sys/types.h>
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    10
#include <stdio.h>
47
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    11
#include <unistd.h>
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    12
#include "main.h"
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    13
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    14
static char xterm_resize_string[100];
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    15
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    16
char * get_xterm_resize_string()
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    17
{
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    18
    int rows, cols;
41
954941c6e40a Added 'nohup' option -n.
viric@llimona
parents: 35
diff changeset
    19
    extern struct winsize app_winsize; /* from app_term.c */
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    20
47
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    21
    if (isatty(0))
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    22
    {
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    23
      int res;
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    24
      /* Get rows and cols from our connection to the terminal: fd 0 */
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    25
      res = ioctl(0, TIOCGWINSZ, &app_winsize);
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    26
      if (res == -1)
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    27
          error("ioctl TIOCGWINSZ");
8dcc45d8f3e5 xterm resizes sent on SIGWINCH. new terminal applications start a new session.
lbatlle@npdl268.bpo.hp.com
parents: 41
diff changeset
    28
    }
41
954941c6e40a Added 'nohup' option -n.
viric@llimona
parents: 35
diff changeset
    29
    rows = app_winsize.ws_row;
954941c6e40a Added 'nohup' option -n.
viric@llimona
parents: 35
diff changeset
    30
    cols = app_winsize.ws_col;
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    31
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    32
    /* Prepare the xterm resize string */
35
69dbea6c3882 Fixed some magic numbers to sizeof.
viric@llimona
parents: 34
diff changeset
    33
    snprintf(xterm_resize_string, sizeof xterm_resize_string,
69dbea6c3882 Fixed some magic numbers to sizeof.
viric@llimona
parents: 34
diff changeset
    34
            "\033[8;%i;%it", rows, cols);
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    35
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    36
    return xterm_resize_string;
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents:
diff changeset
    37
}