4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.10 2008/02/15 23:52:12 james
14 * *** empty log message ***
16 * Revision 1.9 2008/02/15 03:32:07 james
17 * *** empty log message ***
19 * Revision 1.8 2008/02/14 10:36:18 james
20 * *** empty log message ***
22 * Revision 1.7 2008/02/14 10:34:30 james
23 * *** empty log message ***
25 * Revision 1.6 2008/02/13 16:59:34 james
26 * *** empty log message ***
28 * Revision 1.5 2008/02/13 16:57:29 james
29 * *** empty log message ***
31 * Revision 1.4 2008/02/12 22:36:46 james
32 * *** empty log message ***
34 * Revision 1.3 2008/02/09 15:47:28 james
35 * *** empty log message ***
43 speed_t_to_baud (speed_t s)
129 baud_to_speed_t (int baud)
214 tty_pre_select (TTY * t, fd_set * rfds, fd_set * wfds)
217 struct timeval now, dif;
222 gettimeofday (&now, NULL);
223 timersub (&now, &t->hangup_clock, &dif);
226 fprintf (stderr, "+DTR\n");
229 ioctl (t->rfd, TIOCMBIS, &line);
235 FD_SET (t->rfd, rfds);
239 tty_get_status (TTY * t, TTY_Status * s)
243 ioctl (t->rfd, TIOCMGET, &s->lines);
245 fprintf (stderr, "s->lines & TIOCM_DTR=%x\n", s->lines & TIOCM_DTR);
247 if (tcgetattr (t->rfd, &s->termios))
250 s->baud = speed_t_to_baud (cfgetispeed (&s->termios));
251 s->blocked = t->blocked;
257 tty_set_baud (TTY * t, int rate)
259 struct termios tios = { 0 };
261 speed_t s = baud_to_speed_t (rate);
263 if (s == (speed_t) - 1)
266 if (tcgetattr (t->rfd, &tios))
269 cfsetispeed (&tios, s);
270 cfsetospeed (&tios, s);
272 tcsetattr (t->rfd, TCSANOW, &tios);
276 tty_send_break (TTY * t)
278 tcsendbreak (t->wfd, 0);
282 tty_set_flow (TTY * t, int flow)
284 struct termios tios = { 0 };
286 if (tcgetattr (t->rfd, &tios))
290 tios.c_cflag |= CRTSCTS;
292 tios.c_cflag &= ~CRTSCTS;
294 tcsetattr (t->rfd, TCSANOW, &tios);
304 ioctl (t->rfd, TIOCMBIC, &line);
307 gettimeofday (&t->hangup_clock, NULL);
308 fprintf (stderr, "-DTR\n");
315 tty_post_select (Context * c, fd_set * rfds, fd_set * wfds)
318 if (FD_ISSET (c->t->rfd, rfds))
320 if (vt102_dispatch (&c))