Back to index

tetex-bin  3.0
Defines | Functions | Variables
terminal.c File Reference
#include "info.h"
#include "terminal.h"
#include "termdep.h"
#include <sys/types.h>
#include <signal.h>

Go to the source code of this file.

Defines

#define send_to_terminal(string)

Functions

int tgetnum ()
int tgetflag ()
int tgetent ()
char * tgetstr ()
char * tgoto ()
void tputs ()
static int output_character_function (int c)
static void terminal_begin_using_terminal (void)
static void terminal_end_using_terminal (void)
void terminal_goto_xy (int x, int y)
void terminal_put_text (char *string)
void terminal_write_chars (char *string, int nchars)
void terminal_clear_to_eol (void)
void terminal_clear_screen (void)
void terminal_up_line (void)
void terminal_down_line (void)
void terminal_begin_inverse (void)
void terminal_end_inverse (void)
void terminal_ring_bell (void)
static void terminal_delete_lines (int start, int count)
static void terminal_insert_lines (int start, int count)
void terminal_scroll_terminal (int start, int end, int amount)
void terminal_new_terminal (char *terminal_name)
void terminal_get_screen_size (void)
void terminal_initialize_terminal (char *terminal_name)
void terminal_prep_terminal (void)
void terminal_unprep_terminal (void)

Variables

char * BC
char * UP
char PC
short ospeed
VFunctionterminal_begin_inverse_hook = (VFunction *)NULL
VFunctionterminal_end_inverse_hook = (VFunction *)NULL
VFunctionterminal_prep_terminal_hook = (VFunction *)NULL
VFunctionterminal_unprep_terminal_hook = (VFunction *)NULL
VFunctionterminal_up_line_hook = (VFunction *)NULL
VFunctionterminal_down_line_hook = (VFunction *)NULL
VFunctionterminal_clear_screen_hook = (VFunction *)NULL
VFunctionterminal_clear_to_eol_hook = (VFunction *)NULL
VFunctionterminal_get_screen_size_hook = (VFunction *)NULL
VFunctionterminal_goto_xy_hook = (VFunction *)NULL
VFunctionterminal_initialize_terminal_hook = (VFunction *)NULL
VFunctionterminal_new_terminal_hook = (VFunction *)NULL
VFunctionterminal_put_text_hook = (VFunction *)NULL
VFunctionterminal_ring_bell_hook = (VFunction *)NULL
VFunctionterminal_write_chars_hook = (VFunction *)NULL
VFunctionterminal_scroll_terminal_hook = (VFunction *)NULL
static char * term_buffer = NULL
static char * term_string_buffer = NULL
static char * term_name
static char * term_goto
static char * term_clreol
static char * term_cr
static char * term_clrpag
static char * term_begin_use
static char * term_end_use
static char * term_AL
static char * term_DL
static char * term_al
static char * term_dl
static char * term_keypad_on
static char * term_keypad_off
static char * term_up
static char * term_dn
static char * audible_bell
static char * visible_bell
static char * term_mm
static char * term_invbeg
static char * term_invend
int screenwidth
int screenheight
int terminal_is_dumb_p = 0
int terminal_has_meta_p = 0
int terminal_has_visible_bell_p = 0
int terminal_use_visible_bell_p = 0
int terminal_can_scroll = 0
char * term_ku = NULL
char * term_kd = NULL
char * term_kr = NULL
char * term_kl = NULL
char * term_kP = NULL
char * term_kN = NULL
char * term_kh = NULL
char * term_ke = NULL
char * term_kD = NULL
char * term_ki = NULL
char * term_kx = NULL
int original_tty_flags = 0
int original_lmode

Define Documentation

#define send_to_terminal (   string)
Value:
do { \
    if (string) \
      tputs (string, 1, output_character_function); \
     } while (0)

Definition at line 123 of file terminal.c.


Function Documentation

static int output_character_function ( int  c) [static]

Definition at line 116 of file terminal.c.

{
  putc (c, stdout);
  return c;
}

Here is the caller graph for this function:

Definition at line 315 of file terminal.c.

{
  if (terminal_begin_inverse_hook)
    (*terminal_begin_inverse_hook) ();
  else
    {
      send_to_terminal (term_invbeg);
    }
}

Here is the caller graph for this function:

static void terminal_begin_using_terminal ( void  ) [static]

Definition at line 131 of file terminal.c.

{
  RETSIGTYPE (*sigsave) (int signum);

  if (term_keypad_on)
      send_to_terminal (term_keypad_on);
  
  if (!term_begin_use || !*term_begin_use)
    return;

#ifdef SIGWINCH
  sigsave = signal (SIGWINCH, SIG_IGN); 
#endif

  send_to_terminal (term_begin_use);
  fflush (stdout);
  if (STREQ (term_name, "sun-cmd"))
    /* Without this fflush and sleep, running info in a shelltool or
       cmdtool (TERM=sun-cmd) with scrollbars loses -- the scrollbars are
       not restored properly.
       From: strube@physik3.gwdg.de (Hans Werner Strube).  */
    sleep (1);

#ifdef SIGWINCH
  signal (SIGWINCH, sigsave);
#endif
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 279 of file terminal.c.

{
  if (terminal_clear_screen_hook)
    (*terminal_clear_screen_hook) ();
  else
    {
      send_to_terminal (term_clrpag);
    }
}

Here is the caller graph for this function:

Definition at line 267 of file terminal.c.

{
  if (terminal_clear_to_eol_hook)
    (*terminal_clear_to_eol_hook) ();
  else
    {
      send_to_terminal (term_clreol);
    }
}

Here is the caller graph for this function:

static void terminal_delete_lines ( int  start,
int  count 
) [static]

Definition at line 355 of file terminal.c.

{
  int lines;

  /* Normalize arguments. */
  if (start < 0)
    start = 0;

  lines = screenheight - start;
  terminal_goto_xy (0, start);
  if (term_DL)
    tputs (tgoto (term_DL, 0, count), lines, output_character_function);
  else
    {
      while (count--)
        tputs (term_dl, lines, output_character_function);
    }

  fflush (stdout);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 303 of file terminal.c.

{
  if (terminal_down_line_hook)
    (*terminal_down_line_hook) ();
  else
    {
      send_to_terminal (term_dn);
    }
}

Definition at line 327 of file terminal.c.

{
  if (terminal_end_inverse_hook)
    (*terminal_end_inverse_hook) ();
  else
    {
      send_to_terminal (term_invend);
    }
}

Here is the caller graph for this function:

static void terminal_end_using_terminal ( void  ) [static]

Definition at line 162 of file terminal.c.

{
  RETSIGTYPE (*sigsave) (int signum);

  if (term_keypad_off)
      send_to_terminal (term_keypad_off);
  
  if (!term_end_use || !*term_end_use)
    return;

#ifdef SIGWINCH
  sigsave = signal (SIGWINCH, SIG_IGN);
#endif

  send_to_terminal (term_end_use);
  fflush (stdout);
  if (STREQ (term_name, "sun-cmd"))
    /* See comments at other sleep.  */
    sleep (1);

#ifdef SIGWINCH
  signal (SIGWINCH, sigsave);
#endif
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 453 of file terminal.c.

{
  if (terminal_get_screen_size_hook)
    (*terminal_get_screen_size_hook) ();
  else
    {
      screenwidth = screenheight = 0;

#if defined (TIOCGWINSZ)
      {
        struct winsize window_size;

        if (ioctl (fileno (stdout), TIOCGWINSZ, &window_size) == 0)
          {
            screenwidth = (int) window_size.ws_col;
            screenheight = (int) window_size.ws_row;
          }
      }
#endif                          /* TIOCGWINSZ */

      /* Environment variable COLUMNS overrides setting of "co". */
      if (screenwidth <= 0)
        {
          char *sw = getenv ("COLUMNS");

          if (sw)
            screenwidth = atoi (sw);

          if (screenwidth <= 0)
            screenwidth = tgetnum ("co");
        }

      /* Environment variable LINES overrides setting of "li". */
      if (screenheight <= 0)
        {
          char *sh = getenv ("LINES");

          if (sh)
            screenheight = atoi (sh);

          if (screenheight <= 0)
            screenheight = tgetnum ("li");
        }

      /* If all else fails, default to 80x24 terminal. */
      if (screenwidth <= 0)
        screenwidth = 80;

      if (screenheight <= 0)
        screenheight = 24;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void terminal_goto_xy ( int  x,
int  y 
)

Definition at line 229 of file terminal.c.

{
  if (terminal_goto_xy_hook)
    (*terminal_goto_xy_hook) (x, y);
  else
    {
      if (term_goto)
        tputs (tgoto (term_goto, x, y), 1, output_character_function);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void terminal_initialize_terminal ( char *  terminal_name)

Definition at line 513 of file terminal.c.

{
  char *buffer;

  terminal_is_dumb_p = 0;

  if (terminal_initialize_terminal_hook)
    {
      (*terminal_initialize_terminal_hook) (terminal_name);
      return;
    }

  term_name = terminal_name ? terminal_name : getenv ("TERM");
  if (!term_name)
    term_name = "dumb";

  if (!term_string_buffer)
    term_string_buffer = xmalloc (2048);

  if (!term_buffer)
    term_buffer = xmalloc (2048);

  buffer = term_string_buffer;

  term_clrpag = term_cr = term_clreol = NULL;

  /* HP-UX 11.x returns 0 for OK --jeff.hull@state.co.us.  */
  if (tgetent (term_buffer, term_name) < 0)
    {
      terminal_is_dumb_p = 1;
      screenwidth = 80;
      screenheight = 24;
      term_cr = "\r";
      term_up = term_dn = audible_bell = visible_bell = NULL;
      term_ku = term_kd = term_kl = term_kr = NULL;
      term_kP = term_kN = NULL;
      term_kh = term_ke = NULL;
      term_kD = NULL;
      return;
    }

  BC = tgetstr ("pc", &buffer);
  PC = BC ? *BC : 0;

#if defined (HAVE_TERMIOS_H)
  {
    struct termios ti;
    if (tcgetattr (fileno(stdout), &ti) != -1)
      ospeed = cfgetospeed (&ti);
    else
      ospeed = B9600;
  }
#else
# if defined (TIOCGETP)
  {
    struct sgttyb sg;

    if (ioctl (fileno (stdout), TIOCGETP, &sg) != -1)
      ospeed = sg.sg_ospeed;
    else
      ospeed = B9600;
  }
# else
  ospeed = B9600;
# endif /* !TIOCGETP */
#endif

  term_cr = tgetstr ("cr", &buffer);
  term_clreol = tgetstr ("ce", &buffer);
  term_clrpag = tgetstr ("cl", &buffer);
  term_goto = tgetstr ("cm", &buffer);

  /* Find out about this terminal's scrolling capability. */
  term_AL = tgetstr ("AL", &buffer);
  term_DL = tgetstr ("DL", &buffer);
  term_al = tgetstr ("al", &buffer);
  term_dl = tgetstr ("dl", &buffer);

  terminal_can_scroll = ((term_AL || term_al) && (term_DL || term_dl));

  term_invbeg = tgetstr ("mr", &buffer);
  if (term_invbeg)
    term_invend = tgetstr ("me", &buffer);
  else
    term_invend = NULL;

  if (!term_cr)
    term_cr =  "\r";

  terminal_get_screen_size ();

  term_up = tgetstr ("up", &buffer);
  term_dn = tgetstr ("dn", &buffer);
  visible_bell = tgetstr ("vb", &buffer);
  terminal_has_visible_bell_p = (visible_bell != NULL);
  audible_bell = tgetstr ("bl", &buffer);
  if (!audible_bell)
    audible_bell = "\007";
  term_begin_use = tgetstr ("ti", &buffer);
  term_end_use = tgetstr ("te", &buffer);

  term_keypad_on = tgetstr ("ks", &buffer);
  term_keypad_off = tgetstr ("ke", &buffer);

  /* Check to see if this terminal has a meta key. */
  terminal_has_meta_p = (tgetflag ("km") || tgetflag ("MT"));
  if (terminal_has_meta_p)
    {
      term_mm = tgetstr ("mm", &buffer);
    }
  else
    {
      term_mm = NULL;
    }

  /* Attempt to find the arrow keys.  */
  term_ku = tgetstr ("ku", &buffer);
  term_kd = tgetstr ("kd", &buffer);
  term_kr = tgetstr ("kr", &buffer);
  term_kl = tgetstr ("kl", &buffer);

  term_kP = tgetstr ("kP", &buffer);
  term_kN = tgetstr ("kN", &buffer);

#if defined(INFOKEY)
  term_kh = tgetstr ("kh", &buffer);
  term_ke = tgetstr ("@7", &buffer);
  term_ki = tgetstr ("kI", &buffer);
  term_kx = tgetstr ("kD", &buffer);
#endif /* defined(INFOKEY) */

  /* Home and end keys. */
  term_kh = tgetstr ("kh", &buffer);
  term_ke = tgetstr ("@7", &buffer);

  term_kD = tgetstr ("kD", &buffer);

  /* If this terminal is not cursor addressable, then it is really dumb. */
  if (!term_goto)
    terminal_is_dumb_p = 1;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void terminal_insert_lines ( int  start,
int  count 
) [static]

Definition at line 378 of file terminal.c.

{
  int lines;

  /* Normalize arguments. */
  if (start < 0)
    start = 0;

  lines = screenheight - start;
  terminal_goto_xy (0, start);

  if (term_AL)
    tputs (tgoto (term_AL, 0, count), lines, output_character_function);
  else
    {
      while (count--)
        tputs (term_al, lines, output_character_function);
    }

  fflush (stdout);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void terminal_new_terminal ( char *  terminal_name)

Definition at line 441 of file terminal.c.

{
  if (terminal_new_terminal_hook)
    (*terminal_new_terminal_hook) (terminal_name);
  else
    {
      terminal_initialize_terminal (terminal_name);
    }
}

Here is the call graph for this function:

Definition at line 692 of file terminal.c.

{
  int tty;

  if (terminal_prep_terminal_hook)
    {
      (*terminal_prep_terminal_hook) ();
      return;
    }

  terminal_begin_using_terminal ();

  tty = fileno (stdin);

#if defined (HAVE_TERMIOS_H)
  tcgetattr (tty, &original_termios);
  tcgetattr (tty, &ttybuff);
#else
#  if defined (HAVE_TERMIO_H)
  ioctl (tty, TCGETA, &original_termio);
  ioctl (tty, TCGETA, &ttybuff);
#  endif
#endif

#if defined (HAVE_TERMIOS_H) || defined (HAVE_TERMIO_H)
  ttybuff.c_iflag &= (~ISTRIP & ~INLCR & ~IGNCR & ~ICRNL & ~IXON);
/* These output flags are not part of POSIX, so only use them if they
   are defined.  */
#ifdef ONLCR
  ttybuff.c_oflag &= ~ONLCR ;
#endif
#ifdef OCRNL
  ttybuff.c_oflag &= ~OCRNL;
#endif
  ttybuff.c_lflag &= (~ICANON & ~ECHO);

  ttybuff.c_cc[VMIN] = 1;
  ttybuff.c_cc[VTIME] = 0;

  if (ttybuff.c_cc[VINTR] == '\177')
    ttybuff.c_cc[VINTR] = -1;

  if (ttybuff.c_cc[VQUIT] == '\177')
    ttybuff.c_cc[VQUIT] = -1;

#ifdef VLNEXT
  if (ttybuff.c_cc[VLNEXT] == '\026')
    ttybuff.c_cc[VLNEXT] = -1;
#endif /* VLNEXT */
#endif /* TERMIOS or TERMIO */

/* cf. emacs/src/sysdep.c for being sure output is on. */
#if defined (HAVE_TERMIOS_H)
  /* linux kernel 2.2.x needs a TCOFF followed by a TCOON to turn output
     back on if the user presses ^S at the very beginning; just a TCOON
     doesn't work.  --Kevin Ryde <user42@zip.com.au>, 16jun2000.  */
  tcsetattr (tty, TCSANOW, &ttybuff);
#  ifdef TCOON
  tcflow (tty, TCOOFF);
  tcflow (tty, TCOON);
#  endif
#else
#  if defined (HAVE_TERMIO_H)
  ioctl (tty, TCSETA, &ttybuff);
#    ifdef TCXONC
  ioctl (tty, TCXONC, 1);
#    endif
#  endif
#endif

#if !defined (HAVE_TERMIOS_H) && !defined (HAVE_TERMIO_H)
  ioctl (tty, TIOCGETP, &ttybuff);

  if (!original_tty_flags)
    original_tty_flags = ttybuff.sg_flags;

  /* Make this terminal pass 8 bits around while we are using it. */
#  if defined (PASS8)
  ttybuff.sg_flags |= PASS8;
#  endif /* PASS8 */

#  if defined (TIOCLGET) && defined (LPASS8)
  {
    int flags;
    ioctl (tty, TIOCLGET, &flags);
    original_lmode = flags;
    flags |= LPASS8;
    ioctl (tty, TIOCLSET, &flags);
  }
#  endif /* TIOCLGET && LPASS8 */

#  if defined (TIOCGETC)
  {
    struct tchars temp;

    ioctl (tty, TIOCGETC, &original_tchars);
    temp = original_tchars;

    /* C-s and C-q. */
    temp.t_startc = temp.t_stopc = -1;

    /* Often set to C-d. */
    temp.t_eofc = -1;

    /* If the a quit or interrupt character conflicts with one of our
       commands, then make it go away. */
    if (temp.t_intrc == '\177')
      temp.t_intrc = -1;

    if (temp.t_quitc == '\177')
      temp.t_quitc = -1;

    ioctl (tty, TIOCSETC, &temp);
  }
#  endif /* TIOCGETC */

#  if defined (TIOCGLTC)
  {
    struct ltchars temp;

    ioctl (tty, TIOCGLTC, &original_ltchars);
    temp = original_ltchars;

    /* Make the interrupt keys go away.  Just enough to make people happy. */
    temp.t_lnextc = -1;         /* C-v. */
    temp.t_dsuspc = -1;         /* C-y. */
    temp.t_flushc = -1;         /* C-o. */
    ioctl (tty, TIOCSLTC, &temp);
  }
#  endif /* TIOCGLTC */

  ttybuff.sg_flags &= ~ECHO;
  ttybuff.sg_flags |= CBREAK;
  ioctl (tty, TIOCSETN, &ttybuff);
#endif /* !HAVE_TERMIOS_H && !HAVE_TERMIO_H */
}

Here is the call graph for this function:

Here is the caller graph for this function:

void terminal_put_text ( char *  string)

Definition at line 242 of file terminal.c.

{
  if (terminal_put_text_hook)
    (*terminal_put_text_hook) (string);
  else
    {
      printf ("%s", string);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 340 of file terminal.c.

Here is the caller graph for this function:

void terminal_scroll_terminal ( int  start,
int  end,
int  amount 
)

Definition at line 405 of file terminal.c.

{
  if (!terminal_can_scroll)
    return;

  /* Any scrolling at all? */
  if (amount == 0)
    return;

  if (terminal_scroll_terminal_hook)
    (*terminal_scroll_terminal_hook) (start, end, amount);
  else
    {
      /* If we are scrolling down, delete AMOUNT lines at END.  Then insert
         AMOUNT lines at START. */
      if (amount > 0)
        {
          terminal_delete_lines (end, amount);
          terminal_insert_lines (start, amount);
        }

      /* If we are scrolling up, delete AMOUNT lines before START.  This
         actually does the upwards scroll.  Then, insert AMOUNT lines
         after the already scrolled region (i.e., END - AMOUNT). */
      if (amount < 0)
        {
          int abs_amount = -amount;
          terminal_delete_lines (start - abs_amount, abs_amount);
          terminal_insert_lines (end - abs_amount, abs_amount);
        }
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 832 of file terminal.c.

{
  int tty;

  if (terminal_unprep_terminal_hook)
    {
      (*terminal_unprep_terminal_hook) ();
      return;
    }

  tty = fileno (stdin);

#if defined (HAVE_TERMIOS_H)
  tcsetattr (tty, TCSANOW, &original_termios);
#else
#  if defined (HAVE_TERMIO_H)
  ioctl (tty, TCSETA, &original_termio);
#  else /* !HAVE_TERMIO_H */
  ioctl (tty, TIOCGETP, &ttybuff);
  ttybuff.sg_flags = original_tty_flags;
  ioctl (tty, TIOCSETN, &ttybuff);

#  if defined (TIOCGETC)
  ioctl (tty, TIOCSETC, &original_tchars);
#  endif /* TIOCGETC */

#  if defined (TIOCGLTC)
  ioctl (tty, TIOCSLTC, &original_ltchars);
#  endif /* TIOCGLTC */

#  if defined (TIOCLGET) && defined (LPASS8)
  ioctl (tty, TIOCLSET, &original_lmode);
#  endif /* TIOCLGET && LPASS8 */

#  endif /* !HAVE_TERMIO_H */
#endif /* !HAVE_TERMIOS_H */
  terminal_end_using_terminal ();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 291 of file terminal.c.

{
  if (terminal_up_line_hook)
    (*terminal_up_line_hook) ();
  else
    {
      send_to_terminal (term_up);
    }
}
void terminal_write_chars ( char *  string,
int  nchars 
)

Definition at line 254 of file terminal.c.

{
  if (terminal_write_chars_hook)
    (*terminal_write_chars_hook) (string, nchars);
  else
    {
      if (nchars)
        fwrite (string, 1, nchars, stdout);
    }
}

Here is the call graph for this function:

int tgetent ( )
int tgetnum ( )
char* tgetstr ( )
char * tgoto ( )
void tputs ( )

Variable Documentation

char* audible_bell [static]

Definition at line 98 of file terminal.c.

char* BC

Definition at line 42 of file terminal.c.

Definition at line 666 of file terminal.c.

Definition at line 665 of file terminal.c.

Definition at line 44 of file terminal.c.

char PC

Definition at line 43 of file terminal.c.

Definition at line 197 of file terminal.c.

Definition at line 197 of file terminal.c.

char * term_al [static]

Definition at line 87 of file terminal.c.

char* term_AL [static]

Definition at line 87 of file terminal.c.

char* term_begin_use [static]

Definition at line 86 of file terminal.c.

char* term_buffer = NULL [static]

Definition at line 80 of file terminal.c.

char * term_clreol [static]

Definition at line 85 of file terminal.c.

char * term_clrpag [static]

Definition at line 85 of file terminal.c.

char * term_cr [static]

Definition at line 85 of file terminal.c.

char * term_dl [static]

Definition at line 87 of file terminal.c.

char * term_DL [static]

Definition at line 87 of file terminal.c.

char* term_dn [static]

Definition at line 95 of file terminal.c.

char * term_end_use [static]

Definition at line 86 of file terminal.c.

char* term_goto [static]

Definition at line 85 of file terminal.c.

char* term_invbeg [static]

Definition at line 107 of file terminal.c.

char* term_invend [static]

Definition at line 110 of file terminal.c.

char* term_kd = NULL

Definition at line 216 of file terminal.c.

char* term_kD = NULL

Definition at line 223 of file terminal.c.

char* term_ke = NULL

Definition at line 222 of file terminal.c.

char * term_keypad_off [static]

Definition at line 89 of file terminal.c.

char* term_keypad_on [static]

Definition at line 89 of file terminal.c.

char* term_kh = NULL

Definition at line 221 of file terminal.c.

char* term_ki = NULL

Definition at line 224 of file terminal.c.

char* term_kl = NULL

Definition at line 218 of file terminal.c.

char* term_kN = NULL

Definition at line 220 of file terminal.c.

char* term_kP = NULL

Definition at line 219 of file terminal.c.

char* term_kr = NULL

Definition at line 217 of file terminal.c.

char* term_ku = NULL

Definition at line 215 of file terminal.c.

char* term_kx = NULL

Definition at line 225 of file terminal.c.

char* term_mm [static]

Definition at line 104 of file terminal.c.

char* term_name [static]

Definition at line 82 of file terminal.c.

char* term_string_buffer = NULL [static]

Definition at line 81 of file terminal.c.

char* term_up [static]

Definition at line 92 of file terminal.c.

Definition at line 55 of file terminal.c.

Definition at line 212 of file terminal.c.

Definition at line 61 of file terminal.c.

Definition at line 62 of file terminal.c.

Definition at line 60 of file terminal.c.

Definition at line 56 of file terminal.c.

Definition at line 63 of file terminal.c.

Definition at line 64 of file terminal.c.

Definition at line 203 of file terminal.c.

Definition at line 206 of file terminal.c.

Definition at line 65 of file terminal.c.

Definition at line 200 of file terminal.c.

Definition at line 66 of file terminal.c.

Definition at line 57 of file terminal.c.

Definition at line 67 of file terminal.c.

Definition at line 68 of file terminal.c.

Definition at line 70 of file terminal.c.

Definition at line 58 of file terminal.c.

Definition at line 59 of file terminal.c.

Definition at line 209 of file terminal.c.

Definition at line 69 of file terminal.c.

char * UP

Definition at line 42 of file terminal.c.

char* visible_bell [static]

Definition at line 101 of file terminal.c.