From ece1299582523fd5a339398bdddb77f525e2a2fc Mon Sep 17 00:00:00 2001 From: james Date: Wed, 20 Feb 2008 19:44:37 +0000 Subject: [PATCH] @@ --- apps/mainloop.c | 23 +++++++++++++++++------ apps/sympathy.c | 7 +++++-- src/ansi.c | 5 ++++- src/ansi.h | 7 +++++-- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/apps/mainloop.c b/apps/mainloop.c index fd2947f..3c7d01d 100644 --- a/apps/mainloop.c +++ b/apps/mainloop.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.6 2008/02/20 19:44:37 james + * @@ + * * Revision 1.5 2008/02/20 18:31:44 james * *** empty log message *** * @@ -301,8 +304,8 @@ check_status (Context * c, Clients * cs) } -static void -msg_from_server (IPC_Msg * m, Context * c) +static int +msg_from_server (ANSI *a,IPC_Msg * m, Context * c) { switch (m->hdr.type) { @@ -320,6 +323,11 @@ msg_from_server (IPC_Msg * m, Context * c) abort (); *(c->v) = m->vt102.vt102; + + if (a->one_shot) { + a->one_shot(a,&c->v->crt); + return 1; + } //FIXME HTML hook break; case IPC_MSG_TYPE_TERM: @@ -331,6 +339,7 @@ msg_from_server (IPC_Msg * m, Context * c) default: fprintf (stderr, "Unhandeled message type %d\n", m->hdr.type); } +return 0; } @@ -466,7 +475,8 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket, while (client_socket->msg) { - msg_from_server (client_socket->msg, &c); + if (msg_from_server (ansi,client_socket->msg, &c)) + break; socket_consume_msg (client_socket); } } @@ -475,10 +485,11 @@ mainloop (TTY * tty, Socket * server_socket, Socket * client_socket, /*update our local screen */ if (ansi) { - if (ansi_dispatch (ansi, &c)) - break; + if (ansi->dispatch) + ansi->dispatch (ansi, &c); - ansi_update (ansi, &c); + if (ansi->update) + ansi->update (ansi, &c); } } diff --git a/apps/sympathy.c b/apps/sympathy.c index 94105a3..df351f3 100644 --- a/apps/sympathy.c +++ b/apps/sympathy.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.10 2008/02/20 19:44:37 james + * @@ + * * Revision 1.9 2008/02/20 18:49:11 staffcvs * *** empty log message *** * @@ -474,7 +477,7 @@ main (int argc, char *argv[]) terminal_register_handlers (); ansi->terminal = terminal_open (0, 1); - ansi_reset (ansi, NULL); + ansi->reset(ansi, NULL); } } @@ -482,7 +485,7 @@ main (int argc, char *argv[]) if (ansi) { - ansi_terminal_reset (ansi); + ansi->close(ansi); terminal_atexit (); } diff --git a/src/ansi.c b/src/ansi.c index 0194228..8d4d640 100644 --- a/src/ansi.c +++ b/src/ansi.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.25 2008/02/20 19:44:37 james + * @@ + * * Revision 1.24 2008/02/20 19:36:06 james * @@ * @@ -817,7 +820,7 @@ ansi_dispatch (ANSI * a, Context * c) if (!a->terminal) - return; + return 0; red = a->terminal->recv (a->terminal, buf, sizeof (buf)); if (red <= 0) diff --git a/src/ansi.h b/src/ansi.h index 2808987..b88b329 100644 --- a/src/ansi.h +++ b/src/ansi.h @@ -12,6 +12,9 @@ /* * $Log$ + * Revision 1.10 2008/02/20 19:44:37 james + * @@ + * * Revision 1.9 2008/02/20 19:36:06 james * @@ * @@ -76,9 +79,9 @@ typedef struct ANSI_struct int history_ptr; - void (*dispatch)(struct ANSI_struct *,struct Context_struct *); + int (*dispatch)(struct ANSI_struct *,struct Context_struct *); void (*update)(struct ANSI_struct *,struct Context_struct *); - void (*oneshot)(struct ANSI_struct *,struct CRT_struct *); + void (*one_shot)(struct ANSI_struct *,struct CRT_struct *); void (*reset)(struct ANSI_struct *,struct CRT_struct *); void (*terminal_reset)(struct ANSI_struct *); void (*close)(struct ANSI_struct *); -- 2.30.2