diff options
Diffstat (limited to 'src/terminal.c')
-rw-r--r-- | src/terminal.c | 101 |
1 files changed, 55 insertions, 46 deletions
diff --git a/src/terminal.c b/src/terminal.c index f0472a1..1223c0f 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.3 2008/02/13 09:12:21 james + * *** empty log message *** + * * Revision 1.2 2008/02/13 01:08:18 james * *** empty log message *** * @@ -47,7 +50,7 @@ typedef struct TERMINAL_struct } TERMINAL; -static TERMINAL terminal_list=NULL; +static TERMINAL *terminal_list = NULL; int terminal_winches; @@ -56,36 +59,39 @@ static void terminal_close (TTY * _t) { TERMINAL *t = (TERMINAL *) _t; - TERMINAL **ptr=&terminal_list; + TERMINAL **ptr = &terminal_list; if (!t) return; /* Take out of cleanup list */ - while (*ptr && (*ptr != t)) ptr=&((*ptr)->next); + while (*ptr && (*ptr != t)) + ptr = &((*ptr)->next); - if (*ptr) - *ptr=t->next; + if (*ptr) + *ptr = t->next; - tcsetattr(t->wfd,TCSANOW,&t->orig_termios); + tcsetattr (t->wfd, TCSANOW, &t->orig_termios); - set_blocking(t->rfd); - set_blocking(t->wfd); + set_blocking (t->rfd); + set_blocking (t->wfd); free (t); } -void terminal_atexit(void) +void +terminal_atexit (void) { -while (terminal_list) - terminal_close(terminal_list); + while (terminal_list) + terminal_close ((TTY *) terminal_list); } -static void sigint(int dummy) +static void +sigint (int dummy) { -terminal_atexit(); -exit(-1); + terminal_atexit (); + exit (-1); } static void @@ -96,14 +102,15 @@ sigwinch (int not) void -terminal_getsize (TTY *_t) +terminal_getsize (TTY * _t) { -TERMINAL *t=(TTY *) _t; + TERMINAL *t = (TERMINAL *) _t; struct winsize sz = { 0 }; -if (!t) return; + if (!t) + return; -if (ioctl (a->wfd, TIOCGWINSZ, &sz)) + if (ioctl (t->wfd, TIOCGWINSZ, &sz)) { t->size.x = CRT_COLS; t->size.y = CRT_ROWS; @@ -116,17 +123,19 @@ if (ioctl (a->wfd, TIOCGWINSZ, &sz)) } -void terminal_dispatch(void) +void +terminal_dispatch (void) { -TERMINAL *t; + TERMINAL *t; -if (!terminal_winches) return; + if (!terminal_winches) + return; -terminal_winches=0; + terminal_winches = 0; -for (t=terminal_list;t;t=t->next) -terminal_getsize(t); + for (t = terminal_list; t; t = t->next) + terminal_getsize (t); } @@ -137,12 +146,12 @@ terminal_read (TTY * _t, void *buf, int len) TERMINAL *t = (TERMINAL *) _t; int red, done = 0; - terminal_dispatch(); + terminal_dispatch (); do { - red = wrap_read (t->fd, buf, len); + red = wrap_read (t->rfd, buf, len); if (red < 0) return -1; if (!red) @@ -165,12 +174,12 @@ terminal_write (TTY * _t, void *buf, int len) int writ, done = 0; TERMINAL *t = (TERMINAL *) _t; - terminal_dispatch(); + terminal_dispatch (); do { - writ = wrap_write (t->fd, buf, len); + writ = wrap_write (t->wfd, buf, len); if (writ < 0) return -1; if (!writ) @@ -187,21 +196,22 @@ terminal_write (TTY * _t, void *buf, int len) } -void terminal_register_handlers(void) +void +terminal_register_handlers (void) { - struct sigaction sa = { 0 }; + struct sigaction sa = { 0 }; - sa.sa_handler = sigwinch; - sa.sa_flags = SA_RESTART; - sigaction (SIGWINCH, &sa, NULL); + sa.sa_handler = sigwinch; + sa.sa_flags = SA_RESTART; + sigaction (SIGWINCH, &sa, NULL); - sa.sa_handler = sigint; - sa.sa_flags = SA_RESTART; - sigaction (SIGINT, &sa, NULL); + sa.sa_handler = sigint; + sa.sa_flags = SA_RESTART; + sigaction (SIGINT, &sa, NULL); } TTY * -terminal_open (int rfd,int wfd) +terminal_open (int rfd, int wfd) { TERMINAL *t; pid_t child; @@ -213,12 +223,12 @@ terminal_open (int rfd,int wfd) t->rfd = rfd; t->wfd = wfd; - tcgetattr(wfd,&t->orig_termios); + tcgetattr (wfd, &t->orig_termios); - t->next=terminal_list; - terminal_list=t; + t->next = terminal_list; + terminal_list = t; - tcgetattr(tfd,&termios); + tcgetattr (wfd, &termios); set_nonblocking (rfd); set_nonblocking (wfd); @@ -226,15 +236,14 @@ terminal_open (int rfd,int wfd) raw_termios (&termios); - tcsetattr(wfd,TCSANOW,&termios); + tcsetattr (wfd, TCSANOW, &termios); - t->read = terminal_read; - t->write = terminal_write; + t->recv = terminal_read; + t->xmit = terminal_write; t->close = terminal_close; - terminal_getsize((TTY*) t); + terminal_getsize ((TTY *) t); return (TTY *) t; } - |