* Copyright (c) 1983 Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)init_disp.c 5.4 (Berkeley) 6/1/90";
* 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
);