aboutsummaryrefslogtreecommitdiffstats
path: root/src/tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tty.c')
-rw-r--r--src/tty.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/tty.c b/src/tty.c
index 82fd9ed..de1bdca 100644
--- a/src/tty.c
+++ b/src/tty.c
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
/*
* $Log$
+ * Revision 1.10 2008/02/15 23:52:12 james
+ * *** empty log message ***
+ *
* Revision 1.9 2008/02/15 03:32:07 james
* *** empty log message ***
*
@@ -210,6 +213,25 @@ baud_to_speed_t (int baud)
void
tty_pre_select (TTY * t, fd_set * rfds, fd_set * wfds)
{
+ int line;
+ struct timeval now, dif;
+
+ if (t->hanging_up)
+ {
+
+ gettimeofday (&now, NULL);
+ timersub (&now, &t->hangup_clock, &dif);
+ if (dif.tv_sec)
+ {
+ fprintf (stderr, "+DTR\n");
+
+ line = TIOCM_DTR;
+ ioctl (t->rfd, TIOCMBIS, &line);
+ t->hanging_up = 0;
+ }
+ }
+
+
FD_SET (t->rfd, rfds);
}
@@ -219,6 +241,8 @@ tty_get_status (TTY * t, TTY_Status * s)
s->lines = 0;
ioctl (t->rfd, TIOCMGET, &s->lines);
+ if (t->hanging_up)
+ fprintf (stderr, "s->lines & TIOCM_DTR=%x\n", s->lines & TIOCM_DTR);
if (tcgetattr (t->rfd, &s->termios))
return -1;
@@ -271,6 +295,20 @@ tty_set_flow (TTY * t, int flow)
}
+void
+tty_hangup (TTY * t)
+{
+ int line;
+
+ line = TIOCM_DTR;
+ ioctl (t->rfd, TIOCMBIC, &line);
+
+ t->hanging_up = 1;
+ gettimeofday (&t->hangup_clock, NULL);
+ fprintf (stderr, "-DTR\n");
+
+}
+
#if 0
int