aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjames <>2008-02-20 19:44:37 +0000
committerjames <>2008-02-20 19:44:37 +0000
commit8e2bb9b2970ecb7ca3919b074e4474b878bd02bb (patch)
tree41d5a82e8d4612dab9cab273f6941206345a50d4
parente57ab4267033b826cee338a1fb24dc3dd1480782 (diff)
downloadsympathy-8e2bb9b2970ecb7ca3919b074e4474b878bd02bb.tar.gz
sympathy-8e2bb9b2970ecb7ca3919b074e4474b878bd02bb.tar.bz2
sympathy-8e2bb9b2970ecb7ca3919b074e4474b878bd02bb.zip
@@
-rw-r--r--apps/mainloop.c23
-rw-r--r--apps/sympathy.c7
-rw-r--r--src/ansi.c5
-rw-r--r--src/ansi.h7
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 *);