chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / tty.c
index cd9081022fc7d405c096a9ed4756a444295fe703..82fd9edc3f5df683ce7a38f135455a085041c699 100644 (file)
--- a/src/tty.c
+++ b/src/tty.c
@@ -10,6 +10,9 @@ 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 ***
  *
@@ -226,6 +229,49 @@ tty_get_status (TTY * t, TTY_Status * s)
   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)