chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / tty.c
index fb60246c51a488e226500193f88cd57ca49c18b7..82fd9edc3f5df683ce7a38f135455a085041c699 100644 (file)
--- a/src/tty.c
+++ b/src/tty.c
@@ -10,6 +10,12 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.9  2008/02/15 03:32:07  james
+ * *** empty log message ***
+ *
+ * Revision 1.8  2008/02/14 10:36:18  james
+ * *** empty log message ***
+ *
  * Revision 1.7  2008/02/14 10:34:30  james
  * *** empty log message ***
  *
@@ -211,17 +217,61 @@ int
 tty_get_status (TTY * t, TTY_Status * s)
 {
 
-       s->lines=0;
+  s->lines = 0;
   ioctl (t->rfd, TIOCMGET, &s->lines);
 
   if (tcgetattr (t->rfd, &s->termios))
     return -1;
-  s->baud=speed_t_to_baud(cfgetispeed(&s->termios));
+
+  s->baud = speed_t_to_baud (cfgetispeed (&s->termios));
+  s->blocked = t->blocked;
 
   return 0;
 }
 
+void
+tty_set_baud (TTY * t, int rate)
+{
+  struct termios tios = { 0 };
+
+  speed_t s = baud_to_speed_t (rate);
+
+  if (s == (speed_t) - 1)
+    return;
+
+  if (tcgetattr (t->rfd, &tios))
+    return;
+
+  cfsetispeed (&tios, s);
+  cfsetospeed (&tios, s);
+
+  tcsetattr (t->rfd, TCSANOW, &tios);
+}
+
+void
+tty_send_break (TTY * t)
+{
+  tcsendbreak (t->wfd, 0);
+}
+
+void
+tty_set_flow (TTY * t, int flow)
+{
+  struct termios tios = { 0 };
+
+  if (tcgetattr (t->rfd, &tios))
+    return;
+
+  if (flow)
+    tios.c_cflag |= CRTSCTS;
+  else
+    tios.c_cflag &= ~CRTSCTS;
+
+  tcsetattr (t->rfd, TCSANOW, &tios);
+
+}
+
+
 #if 0
 int
 tty_post_select (Context * c, fd_set * rfds, fd_set * wfds)