4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.5 2008/02/14 10:34:47 james
14 * *** empty log message ***
16 * Revision 1.4 2008/02/14 10:34:30 james
17 * *** empty log message ***
19 * Revision 1.3 2008/02/14 02:46:44 james
20 * *** empty log message ***
22 * Revision 1.2 2008/02/14 00:57:58 james
23 * *** empty log message ***
25 * Revision 1.1 2008/02/13 18:05:06 james
26 * *** empty log message ***
33 //vt102_status_line (v, "VT102 foo bar baz I'm the urban spaceman baby");
36 server_msg (IPC_Msg * m, Context * c)
41 case IPC_MSG_TYPE_NOOP:
43 case IPC_MSG_TYPE_DEBUG:
44 // fprintf (stderr,"%p [%d] %s\n", m, m->hdr.size , m->debug.msg );
46 case IPC_MSG_TYPE_HISTORY:
47 history_add (c->h, m->history.history.line);
49 case IPC_MSG_TYPE_VT102:
50 if (sizeof (VT102) != m->vt102.len)
53 *(c->v) = m->vt102.vt102;
55 case IPC_MSG_TYPE_TERM:
56 vt102_parse (c, m->term.term, m->term.len);
58 case IPC_MSG_TYPE_STATUS:
59 vt102_status_line (c->v, m->status.status);
62 fprintf (stderr, "Unhandeled message type %d\n", m->hdr.type);
75 s = socket_connect ("socket");
85 c.h = history_new (200);
87 c.k = keydis_ipc_new (s);
89 terminal_register_handlers ();
90 a.terminal = terminal_open (0, 1);
92 ansi_reset (&a, NULL);
96 struct timeval tv = { 0, 100000 };
101 socket_pre_select (s, &rfds, &wfds);
102 tty_pre_select (a.terminal, &rfds, &wfds);
104 select (FD_SETSIZE, &rfds, &wfds, NULL, &tv);
106 if (socket_post_select (s, &rfds, &wfds))
111 server_msg (s->msg, &c);
112 socket_consume_msg (s);
115 if (ansi_dispatch (&a, &c))
118 ansi_update (&a, &c);
121 ansi_terminal_reset (&a);