# 2.11BSD#431 - /usr/src/ucb/talk/init_disp.c

##### Functions

    init_display      X
    quit              X
    set_edit_chars    X
    sig_sent          X

       1: /*
       2:  * Copyright (c) 1983 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)init_disp.c	5.1 (Berkeley) 6/6/85";
       9: #endif not lint
      10:
      11: /*
      12:  * Initialization code for the display package,
      13:  * as well as the signal handling routines.
      14:  */
      15:
      16: #include "talk.h"
      17: #include <signal.h>
      18:
      19: /*
      20:  * Set up curses, catch the appropriate signals,
      21:  * and build the various windows.
      22:  */
      23: init_display()
      24: {
      25:     void sig_sent();
      26:     struct sigvec sigv;
      27:
      28:     initscr();
      29:     (void) sigvec(SIGTSTP, (struct sigvec *)0, &sigv);
      30:     sigv.sv_mask |= sigmask(SIGALRM);
      31:     (void) sigvec(SIGTSTP, &sigv, (struct sigvec *)0);
      32:     curses_initialized = 1;
      33:     clear();
      34:     refresh();
      35:     noecho();
      36:     crmode();
      37:     signal(SIGINT, sig_sent);
      38:     signal(SIGPIPE, sig_sent);
      39:     /* curses takes care of ^Z */
      40:     my_win.x_nlines = LINES / 2;
      41:     my_win.x_ncols = COLS;
      42:     my_win.x_win = newwin(my_win.x_nlines, my_win.x_ncols, 0, 0);
      43:     scrollok(my_win.x_win, FALSE);
      44:     wclear(my_win.x_win);
      45:
      46:     his_win.x_nlines = LINES / 2 - 1;
      47:     his_win.x_ncols = COLS;
      48:     his_win.x_win = newwin(his_win.x_nlines, his_win.x_ncols,
      49:         my_win.x_nlines+1, 0);
      50:     scrollok(his_win.x_win, FALSE);
      51:     wclear(his_win.x_win);
      52:
      53:     line_win = newwin(1, COLS, my_win.x_nlines, 0);
      54:     box(line_win, '-', '-');
      55:     wrefresh(line_win);
      56:     /* let them know we are working on it */
      57:     current_state = "No connection yet";
      58: }
      59:
      60: /*
      61:  * Trade edit characters with the other talk. By agreement
      62:  * the first three characters each talk transmits after
      63:  * connection are the three edit characters.
      64:  */
      65: set_edit_chars()
      66: {
      67:     char buf[3];
      68:     int cc;
      69:     struct sgttyb tty;
      70:     struct ltchars ltc;
      71:
      72:     ioctl(0, TIOCGETP, &tty);
      73:     ioctl(0, TIOCGLTC, (struct sgttyb *)&ltc);
      74:     my_win.cerase = tty.sg_erase;
      75:     my_win.kill = tty.sg_kill;
      76:     if (ltc.t_werasc == (char) -1)
      77:         my_win.werase = '\027';  /* control W */
      78:     else
      79:         my_win.werase = ltc.t_werasc;
      80:     buf[0] = my_win.cerase;
      81:     buf[1] = my_win.kill;
      82:     buf[2] = my_win.werase;
      83:     cc = write(sockt, buf, sizeof(buf));
      84:     if (cc != sizeof(buf) )
      85:         p_error("Lost the connection");
      86:     cc = read(sockt, buf, sizeof(buf));
      87:     if (cc != sizeof(buf) )
      88:         p_error("Lost the connection");
      89:     his_win.cerase = buf[0];
      90:     his_win.kill = buf[1];
      91:     his_win.werase = buf[2];
      92: }
      93:
      94: void
      95: sig_sent()
      96: {
      97:
      98:     message("Connection closing. Exiting");
      99:     quit();
     100: }
     101:
     102: /*
     103:  * All done talking...hang up the phone and reset terminal thingy's
     104:  */
     105: quit()
     106: {
     107:
     108:     if (curses_initialized) {
     109:         wmove(his_win.x_win, his_win.x_nlines-1, 0);
     110:         wclrtoeol(his_win.x_win);
     111:         wrefresh(his_win.x_win);
     112:         endwin();
     113:     }
     114:     if (invitation_waiting)
     115:         send_delete();
     116:     exit(0);
     117: }

#### Defined functions

init_display defined in line 23; used 1 times

- in /usr/src/ucb/talk/talk.c line 39

quit defined in line 105; used 6 times

- in line 99
- in /usr/src/ucb/talk/invite.c line 120
- in /usr/src/ucb/talk/io.c line 61, 68, 101
- in /usr/src/ucb/talk/talk.h line 17

set_edit_chars defined in line 65; used 1 times

- in /usr/src/ucb/talk/talk.c line 46

sig_sent defined in line 94; used 3 times

- in line 25, 37-38(2)

#### Defined variables

sccsid defined in line 8; never used

Last modified: 1987-02-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1367 |