* Copyright (c) 1983 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
static char sccsid
[] = "@(#)init_disp.c 5.1 (Berkeley) %G%";
* Initialization code for the display package,
* as well as the signal handling routines.
* Set up curses, catch the appropriate signals,
* and build the various windows.
(void) sigvec(SIGTSTP
, (struct sigvec
*)0, &sigv
);
sigv
.sv_mask
|= sigmask(SIGALRM
);
(void) sigvec(SIGTSTP
, &sigv
, (struct sigvec
*)0);
signal(SIGINT
, sig_sent
);
signal(SIGPIPE
, sig_sent
);
/* curses takes care of ^Z */
my_win
.x_nlines
= LINES
/ 2;
my_win
.x_win
= newwin(my_win
.x_nlines
, my_win
.x_ncols
, 0, 0);
scrollok(my_win
.x_win
, FALSE
);
his_win
.x_nlines
= LINES
/ 2 - 1;
his_win
.x_win
= newwin(his_win
.x_nlines
, his_win
.x_ncols
,
scrollok(his_win
.x_win
, FALSE
);
line_win
= newwin(1, COLS
, my_win
.x_nlines
, 0);
/* let them know we are working on it */
current_state
= "No connection yet";
* Trade edit characters with the other talk. By agreement
* the first three characters each talk transmits after
* connection are the three edit characters.
ioctl(0, TIOCGETP
, &tty
);
ioctl(0, TIOCGLTC
, (struct sgttyb
*)<c
);
my_win
.cerase
= tty
.sg_erase
;
my_win
.kill
= tty
.sg_kill
;
if (ltc
.t_werasc
== (char) -1)
my_win
.werase
= '\027'; /* control W */
my_win
.werase
= ltc
.t_werasc
;
cc
= write(sockt
, buf
, sizeof(buf
));
p_error("Lost the connection");
cc
= read(sockt
, buf
, sizeof(buf
));
p_error("Lost the connection");
message("Connection closing. Exiting");
* All done talking...hang up the phone and reset terminal thingy's
if (curses_initialized
) {
wmove(his_win
.x_win
, his_win
.x_nlines
-1, 0);
wclrtoeol(his_win
.x_win
);