version 1.12, 1995/12/26 17:35:36
|
version 1.15, 1996/04/17 16:39:41
|
Line 111
|
Line 111
|
#endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ |
#endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ |
|
|
#include <errno.h> |
#include <errno.h> |
extern int errno; |
/* extern int errno; */ |
|
|
#if defined (SHELL) |
#if defined (SHELL) |
# include <posixstat.h> |
# include <posixstat.h> |
Line 183 static int eof_char = CTRL ('D');
|
Line 183 static int eof_char = CTRL ('D');
|
/* **************************************************************** */ |
/* **************************************************************** */ |
|
|
/* Non-zero means that the terminal is in a prepped state. */ |
/* Non-zero means that the terminal is in a prepped state. */ |
static int terminal_prepped = 0; |
int terminal_prepped = 0; |
|
|
#if defined (NEW_TTY_DRIVER) |
#if defined (NEW_TTY_DRIVER) |
|
|
Line 729 signal_throw(int sig)
|
Line 729 signal_throw(int sig)
|
longjmp(throw_jmp_buf,code); /* or use siglongjmp ? */ |
longjmp(throw_jmp_buf,code); /* or use siglongjmp ? */ |
} |
} |
|
|
static void |
static void termprep (int sig) |
termprep (int sig) |
|
{ |
{ |
terminal_prepped=0; |
|
signal(sig,termprep); |
signal(sig,termprep); |
|
terminal_prepped=0; |
|
} |
|
|
|
UCell rows=24; |
|
UCell cols=80; |
|
|
|
void get_winsize() |
|
{ |
|
#ifdef TIOCGWINSZ |
|
struct winsize size; |
|
|
|
if (ioctl (1, TIOCGWINSZ, (char *) &size) >= 0) { |
|
rows = size.ws_row; |
|
cols = size.ws_col; |
|
} |
|
#else |
|
char *s, *ends; |
|
unsigned long ul; |
|
if (s=getenv("LINES")) { |
|
rows=atoi(s); |
|
if (rows==0) |
|
rows=24; |
|
} |
|
if (s=getenv("COLUMNS")) { |
|
rows=atoi(s); |
|
if (rows==0) |
|
cols=80; |
|
} |
|
#endif |
|
} |
|
|
|
static void change_winsize(int sig) |
|
{ |
|
signal(sig,change_winsize); |
|
#ifdef TIOCGWINSZ |
|
get_winsize(); |
|
#endif |
} |
} |
|
|
void |
void install_signal_handlers (void) |
install_signal_handlers (void) |
|
{ |
{ |
|
|
#if 0 |
#if 0 |
Line 801 install_signal_handlers (void)
|
Line 835 install_signal_handlers (void)
|
#ifdef SIGTTOU |
#ifdef SIGTTOU |
SIGTTOU, |
SIGTTOU, |
#endif |
#endif |
#ifdef SIGWINCH |
|
SIGWINCH, |
|
#endif |
|
#ifdef SIGSTKFLT |
#ifdef SIGSTKFLT |
SIGSTKFLT, |
SIGSTKFLT, |
#endif |
#endif |
Line 838 install_signal_handlers (void)
|
Line 869 install_signal_handlers (void)
|
#ifdef SIGALRM |
#ifdef SIGALRM |
SIGALRM, |
SIGALRM, |
#endif |
#endif |
|
#ifdef SIGPIPE |
|
SIGPIPE, |
|
#endif |
#ifdef SIGPOLL |
#ifdef SIGPOLL |
SIGPOLL, |
SIGPOLL, |
#endif |
#endif |
Line 879 install_signal_handlers (void)
|
Line 913 install_signal_handlers (void)
|
#ifdef SIGABRT |
#ifdef SIGABRT |
SIGABRT, |
SIGABRT, |
#endif |
#endif |
#ifdef SIGPIPE |
|
SIGPIPE, |
|
#endif |
|
#ifdef SIGTERM |
#ifdef SIGTERM |
SIGTERM, |
SIGTERM, |
#endif |
#endif |
Line 889 install_signal_handlers (void)
|
Line 920 install_signal_handlers (void)
|
SIGXCPU, |
SIGXCPU, |
#endif |
#endif |
}; |
}; |
static short sigs_to_termprep [] = { |
|
#ifdef SIGCONT |
|
SIGCONT, |
|
#endif |
|
}; |
|
int i; |
int i; |
|
|
#define DIM(X) (sizeof (X) / sizeof *(X)) |
#define DIM(X) (sizeof (X) / sizeof *(X)) |
Line 905 install_signal_handlers (void)
|
Line 931 install_signal_handlers (void)
|
signal (sigs_to_throw [i], signal_throw); |
signal (sigs_to_throw [i], signal_throw); |
for (i = 0; i < DIM (sigs_to_quit); i++) |
for (i = 0; i < DIM (sigs_to_quit); i++) |
signal (sigs_to_quit [i], graceful_exit); |
signal (sigs_to_quit [i], graceful_exit); |
for (i = 0; i < DIM (sigs_to_termprep); i++) |
#ifdef SIGCONT |
signal (sigs_to_termprep [i], termprep); |
signal (SIGCONT, termprep); |
|
#endif |
|
#ifdef SIGWINCH |
|
signal (SIGWINCH, change_winsize); |
|
#endif |
} |
} |
/* end signal handling */ |
/* end signal handling */ |