aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mainloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/mainloop.c')
-rw-r--r--apps/mainloop.c58
1 files changed, 43 insertions, 15 deletions
diff --git a/apps/mainloop.c b/apps/mainloop.c
index 7fb269a..ad2812e 100644
--- a/apps/mainloop.c
+++ b/apps/mainloop.c
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
/*
* $Log$
+ * Revision 1.9 2008/02/23 11:48:51 james
+ * *** empty log message ***
+ *
* Revision 1.8 2008/02/22 23:39:30 james
* *** empty log message ***
*
@@ -300,8 +303,29 @@ check_status (Context * c, Clients * cs)
sprintf (ptr, ", %d client%s", status.nclients,
(status.nclients == 1) ? "" : "s");
+ if (c->tp->biterrs)
+ {
+
+ ptr +=
+ sprintf (ptr, ", %d err%s", c->tp->biterrs,
+ (c->tp->biterrs == 1) ? "" : "s");
+
+ if (c->tp->guessed_baud == -1)
+ {
+ ptr += sprintf (ptr, " try higher");
+ }
+ else if (c->tp->guessed_baud > 0)
+ {
+ ptr += sprintf (ptr, " try %d", status.baud / c->tp->guessed_baud);
+ }
+ }
+
*ptr = 0;
+#if 0
+ log_f (c->l, "%s:%d %s", __FILE__, __LINE__, buf);
+#endif
+
if (cs)
send_status (cs, buf);
else
@@ -311,7 +335,7 @@ check_status (Context * c, Clients * cs)
static int
-msg_from_server (ANSI *a,IPC_Msg * m, Context * c)
+msg_from_server (ANSI * a, IPC_Msg * m, Context * c)
{
switch (m->hdr.type)
{
@@ -330,10 +354,11 @@ msg_from_server (ANSI *a,IPC_Msg * m, Context * c)
*(c->v) = m->vt102.vt102;
- if (a->one_shot) {
- a->one_shot(a,&c->v->crt);
- return 1;
- }
+ if (a->one_shot)
+ {
+ a->one_shot (a, &c->v->crt);
+ return 1;
+ }
//FIXME HTML hook
break;
case IPC_MSG_TYPE_TERM:
@@ -345,7 +370,7 @@ msg_from_server (ANSI *a,IPC_Msg * m, Context * c)
default:
fprintf (stderr, "Unhandeled message type %d\n", m->hdr.type);
}
-return 0;
+ return 0;
}
@@ -357,6 +382,8 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
Context c = { 0 };
Clients *clients;
+ c.tp = tty_parser_new ();
+ c.u = utf8_new ();
c.v = vt102_new ();
c.h = history_new (nhistory);
@@ -401,7 +428,7 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
for (;;)
{
- struct timeval tv = { 1, 0 };
+ struct timeval tv = { 0, 250000 };
if ((c.d) && (c.d->disconnect))
break;
@@ -476,18 +503,19 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
/*any data from the server */
if (client_socket)
{
- int one_shot;
+ int one_shot;
if (socket_post_select (client_socket, &rfds, &wfds))
break;
while (client_socket->msg)
{
- if (msg_from_server (ansi,client_socket->msg, &c))
- one_shot++;
-
+ if (msg_from_server (ansi, client_socket->msg, &c))
+ one_shot++;
+
socket_consume_msg (client_socket);
}
- if (one_shot) break;
+ if (one_shot)
+ break;
}
@@ -495,10 +523,10 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket,
if (ansi)
{
if (ansi->dispatch)
- ansi->dispatch (ansi, &c);
+ ansi->dispatch (ansi, &c);
- if (ansi->update)
- ansi->update (ansi, &c);
+ if (ansi->update)
+ ansi->update (ansi, &c);
}
}