chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / terminal.c
index 03b688a30b62288a5e2c1900b5d339b8db625f4b..a3be09bc62f1b835a7457d1ade6aeade8933dbab 100644 (file)
@@ -6,10 +6,26 @@
  *
  */
 
-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 ***
  *
@@ -91,11 +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, "\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);
+  t->xmit (_t, "\033[J", 3);    //erase rest of screen
 
   set_blocking (t->rfd);
   set_blocking (t->wfd);
@@ -244,11 +264,11 @@ 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;
 
@@ -271,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);