X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fterminal.c;h=a3be09bc62f1b835a7457d1ade6aeade8933dbab;hb=0811309bdec5ebb179d6056005f94c585b8fc8fd;hp=7bbc761080aa390b9c0944efaac8f0f9d446619f;hpb=c06c4c87aef651f32419c6a63d8291b15bad5cf4;p=sympathy.git diff --git a/src/terminal.c b/src/terminal.c index 7bbc761..a3be09b 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -6,10 +6,35 @@ * */ -static char rcsid[] = "$Id$"; +static char rcsid[] = + "$Id$"; /* * $Log$ + * Revision 1.12 2008/02/28 16:57:52 james + * *** empty log message *** + * + * Revision 1.11 2008/02/26 23:56:12 james + * *** empty log message *** + * + * Revision 1.10 2008/02/26 23:23:17 james + * *** empty log message *** + * + * Revision 1.9 2008/02/15 03:32:07 james + * *** empty log message *** + * + * Revision 1.8 2008/02/14 10:39:14 james + * *** empty log message *** + * + * Revision 1.7 2008/02/14 01:55:57 james + * *** empty log message *** + * + * Revision 1.6 2008/02/14 00:57:58 james + * *** empty log message *** + * + * Revision 1.5 2008/02/13 18:05:06 james + * *** empty log message *** + * * Revision 1.4 2008/02/13 16:57:29 james * *** empty log message *** * @@ -82,10 +107,15 @@ terminal_close (TTY * _t) set_nonblocking (t->wfd); - t->xmit (t, "\033[r", 3); - t->xmit (t, "\033[0m", 4); - i = sprintf (buf, "\033[%d;%dH", CRT_ROWS + 1, 1); - t->xmit (t, buf, i); + t->xmit (_t, "\033%@", 3); //Leave UTF-8 + t->xmit (_t, "\033(B", 3); //US-ASCII in G0 + t->xmit (_t, "\033)B", 3); //US-ASCII in G1 + t->xmit (_t, "\017", 1); //Select G0 + t->xmit (_t, "\033[r", 3); //No margins + t->xmit (_t, "\033[0m", 4); //Default attributes + i = sprintf (buf, "\033[%d;%dH", t->displayed_length ?(t->displayed_length+1): (CRT_ROWS +1), 1); //Cursor to bottom + t->xmit (_t, buf, i); + t->xmit (_t, "\033[J", 3); //erase rest of screen set_blocking (t->rfd); set_blocking (t->wfd); @@ -149,7 +179,7 @@ terminal_dispatch (void) terminal_winches = 0; for (t = terminal_list; t; t = t->next) - terminal_getsize (t); + terminal_getsize ((TTY *) t); } @@ -228,16 +258,17 @@ terminal_register_handlers (void) sigaction (SIGINT, &sa, NULL); } + TTY * terminal_open (int rfd, int wfd) { TERMINAL *t; pid_t child; - char name[1024]; struct termios termios; t = (TERMINAL *) malloc (sizeof (TERMINAL)); + strcpy (t->name, "terminal"); t->rfd = rfd; t->wfd = wfd; @@ -260,6 +291,7 @@ terminal_open (int rfd, int wfd) t->recv = terminal_read; t->xmit = terminal_write; t->close = terminal_close; + t->blocked = 0; terminal_getsize ((TTY *) t);